Hibernate配置
junit测试
import static org.junit.Assert.*;
public class HibernateTest{
SessionFactory factory=null;
Session session=null;
//测试之前初始化数据
@Before
public void setUp() throws Eception{
System.out.println("初始化");
Configuration config=new Configuration
().configure();
ServiceRegistry sr=new
ServiceRegistryBuilder.applySetting(config.getProperties());
factory=config.buildSessionFactory(sr);
session=factory.openSession();
}
@After
//测试之后释放数据
public void tearDown() throws Exception{
System.out.println("结束,释放资源");
if(session.isOpen()){
session.close();
}
}
}
@Test测试方法
public void tearDown() throws Exception{
System.out.println("初始化");
} @Test
public void testAdd(){
Transaction tx=session.beginTransaction();
Person p=new Person("admin",123456,new Date
());
session.persist(p);//新增需要事务
tx.commit();
}
}
//Hibernate深入配置
access
<hibernate-mapping default-access="property">
//field(可以不需要getter/setter方法操作对象属性)
(尽量不要这样设置)
Person p=(Person)session.get(Person.class,id);//根据反射创建
对象
System.out.println(p);
<!--
1.default-access="field"对象属性状态方式设置
property:表示这个属性需要通过getter/settter方法搓澡
默认使用
2.package:指定本持久化配置文件的class的包名
auto-import:指定引入包
default-lazy:指定本持久化配置文件中的class延迟加载策略
default-cascade:指定本持久化配置文件中的class级联操作策略
<class name="Person" table="t_person">
dynamic-insert:没有赋值的属性不会参与新增操作
若为true:没有赋值的属性不会参与操作
mutable:表明该类是否允许更新
false:不允许更新,但是可以新增删除
select-before-update:true(执行更新之前先发起一条sql查询,
看看数据是否与表不一致,不一致就更新,否则不更新)
where="t_name=test2":在查询之前附带一个where查询条件
<property name="count" formula="(select (*)from
t_Person) "/>
指定一个属性的数据来源formula对应的查询语句
public void testAdd(){
Person p=new Person();
p.setName("Xxx");
System.out.println(p);
session.beginTransaction();
session.persist(p);
tx.commit();
}
public void testUpdate(){
Person p=new Person();
p.setId(1);
p.setName("Xxx");
System.out.println(p);
session.beginTransaction();
session.Update(p);//更新需要Id
tx.commit();
}
-->
<!--property其他属性映射配置
name:指定持久化类中需要映射的属性名
column:指定表的列名(不写表示使用默认属性名)
length:指定列存储数据长度
type:指定列字段类型
-->
junit测试
import static org.junit.Assert.*;
public class HibernateTest{
SessionFactory factory=null;
Session session=null;
//测试之前初始化数据
@Before
public void setUp() throws Eception{
System.out.println("初始化");
Configuration config=new Configuration
().configure();
ServiceRegistry sr=new
ServiceRegistryBuilder.applySetting(config.getProperties());
factory=config.buildSessionFactory(sr);
session=factory.openSession();
}
@After
//测试之后释放数据
public void tearDown() throws Exception{
System.out.println("结束,释放资源");
if(session.isOpen()){
session.close();
}
}
}
@Test测试方法
public void tearDown() throws Exception{
System.out.println("初始化");
} @Test
public void testAdd(){
Transaction tx=session.beginTransaction();
Person p=new Person("admin",123456,new Date
());
session.persist(p);//新增需要事务
tx.commit();
}
}
//Hibernate深入配置
access
<hibernate-mapping default-access="property">
//field(可以不需要getter/setter方法操作对象属性)
(尽量不要这样设置)
Person p=(Person)session.get(Person.class,id);//根据反射创建
对象
System.out.println(p);
<!--
1.default-access="field"对象属性状态方式设置
property:表示这个属性需要通过getter/settter方法搓澡
默认使用
2.package:指定本持久化配置文件的class的包名
auto-import:指定引入包
default-lazy:指定本持久化配置文件中的class延迟加载策略
default-cascade:指定本持久化配置文件中的class级联操作策略
<class name="Person" table="t_person">
dynamic-insert:没有赋值的属性不会参与新增操作
若为true:没有赋值的属性不会参与操作
mutable:表明该类是否允许更新
false:不允许更新,但是可以新增删除
select-before-update:true(执行更新之前先发起一条sql查询,
看看数据是否与表不一致,不一致就更新,否则不更新)
where="t_name=test2":在查询之前附带一个where查询条件
<property name="count" formula="(select (*)from
t_Person) "/>
指定一个属性的数据来源formula对应的查询语句
public void testAdd(){
Person p=new Person();
p.setName("Xxx");
System.out.println(p);
session.beginTransaction();
session.persist(p);
tx.commit();
}
public void testUpdate(){
Person p=new Person();
p.setId(1);
p.setName("Xxx");
System.out.println(p);
session.beginTransaction();
session.Update(p);//更新需要Id
tx.commit();
}
-->
<!--property其他属性映射配置
name:指定持久化类中需要映射的属性名
column:指定表的列名(不写表示使用默认属性名)
length:指定列存储数据长度
type:指定列字段类型
-->