您的位置:首页 > 其它

Hibernate初学之一对多、多对一关系模型

2013-03-05 21:00 148 查看
举例订单与客户

多对一关系模型:

· 首先是导包;这个省略不写了,

· 其次写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();

}

}

}


本文出自 “我为自己代言” 博客,请务必保留此出处http://fighter2013.blog.51cto.com/6204387/1147908
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: