举例订单与客户
多对一关系模型:
· 首先是导包;这个省略不写了,
· 其次写domain类
分为Client Order两个类,因为是多对一的关系,所以外键应该放在Order这个类里;
配置文件:hibernate.cfg.xml
<hibernate-configuration> <session-factory name="foo"> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql:///test</property> <property name="connection.username">root</property> <property name="connection.password">root</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="show_sql">true</property> <property name="hbm2ddl.auto">update</property> <mapping resource="com/hbsi/domain/Client.hbm.xml"/> <mapping resource="com/hbsi/domain/Order.hbm.xml"/> </session-factory> </hibernate-configuration> 定义一个Client的变量; ·然后写配置文件,Client.hbm.xml <hibernate-mapping package=”com.hbsi.domain”> <class name=”Client” table=”client”>//类名和表名 <id name=”id” column=”id”>//变量和字段 <generator class= ”native” />//根据数据库里的设置自定义 </id> <property name=”name” /> </class> </hibernate -mapping> Order.hbm.xml <hibernate-mapping> <class name=”Order” table=”ordershop”> <id name=”id”> <generator class=”native” /> </id> <property name=”shopname” column=”shopname” /> <property name=”number” column=”number”/> <property name = “price” column=”price” /> <many-to-one name=”client” column=”client_id” /> <class> </hibernate-mapping> 配置文件这样就写完了,接下来就是添加查找; Session session=null; @Test public void add(Client client,Order order){ try{ session = HibernateUtil.getSession();//获取工具类 session.beginTransaction();//开启事务 /*Client client = new Client(); client.setName("刘总"); Order order1 = new Order(); order1.setShopname("航空母舰"); order1.setNumber(2); order1.setPrice(22); order1.setCt(client); Order order2 = new Order(); order2.setShopname("航空母舰"); order2.setNumber(2); order2.setPrice(22); order2.setCt(client);*/ session.save(client); session.save(order); session.beginTransaction().commit(); }finally{ if(session!=null){ session.close(); } } } public void find(int id){ try{ session = HibernateUtil.getSession(); session.beginTransaction(); Order order = (Order) session.get(Order.class, id); System.out.println(order.getCt().getName()); session.beginTransaction().commit(); }finally{ if(session!=null){ session.close(); } } } 测试: public static void main(String[] args ){ Client client = new Client(); client.setName("xiao总"); Order order1 = new Order(); order1.setShopname("美国"); order1.setNumber(2); order1.setPrice(22); order1.setCt(client); Order order2 = new Order(); order2.setShopname("日本"); order2.setNumber(2); order2.setPrice(22); order2.setCt(client); Many2one mo = new Many2one(); mo.add(client, order1); mo.find(2); } 关系模型一对多: Client.hbm.xml <hibernate-mapping package="com.hbsi.domain2"> <class name="Client" table="client"> <id name="id" column="id"> <generator class = "native" /> </id> <property name="name" /> <set name="order" table="ordershop" cascade="save-update"> <key column="user_id" /> <one-to-many class="Order" /> </set> </class> </hibernate-mapping> Order.hbm.xml <hibernate-mapping package="com.hbsi.domain2"> <class name="Order" table="ordershop"> <id name="id"> <generator class = "native" /> </id> <property name="shopname" column="shopname" /> <property name="number" column="number" /> <property name="price" column="price" /> </class> </hibernate-mapping> 添加方法: public void add(Client client,Order order){ try{ session = HibernateUtil.getSession(); session.beginTransaction(); session.save(client); // session.save(order); session.beginTransaction().commit(); }finally{ if(session!=null){ session.close(); } } } public void find(int id){ try{ session = HibernateUtil.getSession(); session.beginTransaction(); Client client = (Client) session.get(Order.class, id); Set<Order> orders =client.getOrder(); orders.size(); session.beginTransaction().commit(); }finally{ if(session!=null){ session.close(); } } }