Hibernate初学中的对多、多对一关系模型及构造函数和构造代码比较
2013-02-17 16:15
344 查看
举例订单与客户
多对一关系模型:
· 首先是导包;这个省略不写了,
· 其次写domain类
分为Client Order两个类,因为是多对一的关系,所以外键应该放在Order这个类里;
配置文件:hibernate.cfg.xml
[java]
<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>
添加方法:
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();
}
}
}
----------------------------------------------构造函数和构造代码块比较
[java]
class Demo
{
public Demo()//构造函数(方法)
{ int a=90;
System.out.println("构造函数a="+a);
}
{
//构造代码块
int a=80;//未创建对象,不会运行。
System.out.println("构造代码a="+a);
}
public static void main(String []args)
{
System.out.println("运行结果");
new Demo();
}
}
本文出自 “网络侠客” 博客,请务必保留此出处http://jaiaiifh.blog.51cto.com/5069434/1134508
多对一关系模型:
· 首先是导包;这个省略不写了,
· 其次写domain类
分为Client Order两个类,因为是多对一的关系,所以外键应该放在Order这个类里;
配置文件:hibernate.cfg.xml
[java]
<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>
添加方法:
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();
}
}
}
----------------------------------------------构造函数和构造代码块比较
[java]
class Demo
{
public Demo()//构造函数(方法)
{ int a=90;
System.out.println("构造函数a="+a);
}
{
//构造代码块
int a=80;//未创建对象,不会运行。
System.out.println("构造代码a="+a);
}
public static void main(String []args)
{
System.out.println("运行结果");
new Demo();
}
}
本文出自 “网络侠客” 博客,请务必保留此出处http://jaiaiifh.blog.51cto.com/5069434/1134508
相关文章推荐
- Hibernate初学之一对多、多对一关系模型
- Hibernate初学之一对多、多对一关系模型
- java语言基础之构造函数深入以及构造函数和构造代码块比较-作者:逝秋
- 初学hibernate时,多对多测试代码,中间建了一张关系表。
- 面向对象,类的组合关系,继承,实现,方法重写,方法重载,this的使用,抽象方法和抽象类的比较,父类构造方法存在的意义,多态的是用和解析,各种访问修饰符
- hibernate映射一对多,双向关系[关联自身],初学例子四
- 黑马程序员-Java之构造代码块、构造函数、静态代码块
- 黑马程序员_构造函数与构造代码块
- fastjson在使用hibernate关系模型转json出现$ref解决办法
- hibernate中映射表之间的关系的代码写法
- java基础之----构造函数和构造代码块
- c++实现日期类(class Date) 构造函数 拷贝构造 操作符重载(输入输出 比较操作 算数运算 自增自减)
- 黑马程序员_005_构造代码块、构造函数和静态代码块
- c#语法糖代码——继承中构造函数的问题,this&base比较
- Java中对象比较(第三个代码模型)
- Java day04 构造函数 ,构造代码块
- struts2+spring+hibernate分页代码[比较多]第1/7页
- hibernate——一对一、多对一和多对多关系的比较
- 模块化C代码与UML对象模型之间的映射(3)——UML关系
- fastjson在使用hibernate关系模型转json出现$ref解决办法