hibernate接上篇,增删改查测试(基础部分)

本篇假设你已经按照上篇弄好项目并且hibernate运行没问题了,继续

持久化java类必须遵循的原则
1 为类的持久化类字段申明访问方法(getter/setter)
2 一个默认的构造器,这样的话Hibernate就可以使用Constructor.newInstance()
来实例化对象
3 如果是集合类型的属性,它的类型必须定义为集合的接口。如:List、Set
4 提供一个标识属性(identifier property)。如果没有该属性,某些功能不起作用
,比如:级联更新(Cascaded updates) Session.saveOrUpdate();
通常建议标识符类型使用Integer封装类型

属性讲解:







以上是知识点:下面是测试方法,不截图了,复制代码

private static void test(){
//获得hibernate.cfg.xml中的配置
Configuration config = new Configuration().configure();
//获得连接工厂,通常对应一个数据库,通常一个应用程序只有一个,在启动的时候创建就可以了
//线程安全
SessionFactory factory = config.buildSessionFactory();
//获得Session,session是hibernate的核心api,其它的增删改查都是通过session完成
//session相当于一次数据库表的操作,非线程安全
Session session = factory.openSession();
//hibernate的增删改查需要事务的支持
Transaction tx = session.beginTransaction();
Person p = new Person("admin",1234563,new Date());
//将person对象持久化到数据库
session.save(p);
//提交事务
tx.commit();
//关闭session释放资源
session.close();
//关闭sessionfactory,通常不用手动关闭
factory.close();
}
private static void testUpdate2(){
Configuration config = new Configuration().configure();
//hibernate4推荐实现服务注册方式进行SessionFactory获取
ServiceRegistry sr = new ServiceRegistryBuilder()
.applySettings(config.getProperties()).buildServiceRegistry();
SessionFactory factory = config.buildSessionFactory(sr);
Session session = factory.openSession();
Transaction tx = session.beginTransaction();
Person p = new Person();
p.setId(2);
p.setName("wolegequ");
//更新
session.update(p);
tx.commit();
session.close();
}
private static void testUpdate3(){
Configuration config = new Configuration().configure();
//hibernate4推荐实现服务注册方式进行SessionFactory获取
ServiceRegistry sr = new ServiceRegistryBuilder()
.applySettings(config.getProperties()).buildServiceRegistry();
SessionFactory factory = config.buildSessionFactory(sr);
Session session = factory.openSession();
Transaction tx = session.beginTransaction();
//持久化对象在更新的时候可以不需要显示的调用update()方法
//持久化状态对象会在session关闭的时候如果内存数据和表数据不一致将自动同步到数据库表
Person p = (Person)session.get(Person.class,1);
p.setName("wahaha");
//也可以使用 session.merge(p);merge返回一个合并后的持久化状态对象
tx.commit();
session.close();
}
private static void tessaveorupdate1(){
Configuration config = new Configuration().configure();
//hibernate4推荐实现服务注册方式进行SessionFactory获取
ServiceRegistry sr = new ServiceRegistryBuilder()
.applySettings(config.getProperties()).buildServiceRegistry();
SessionFactory factory = config.buildSessionFactory(sr);
Session session = factory.openSession();
Transaction tx = session.beginTransaction();
Person p = new Person();
p.setId(2);
p.setName("woFSDFlegequa");
p.setPassword(112);
p.setBirthday(new Date());
//根据id判断是更新或者新增,id存在是更新,不存在是新增。如果给的id不存在则报错
session.saveOrUpdate(p);
tx.commit();
session.close();
}
//删除测试,删除持久化状态对象
private static void testdelete1(){
Configuration config = new Configuration().configure();
ServiceRegistry sr = new ServiceRegistryBuilder().applySettings(
config.getProperties()).buildServiceRegistry();
SessionFactory factory = config.buildSessionFactory(sr);
Session session = factory.openSession();
Transaction tx = session.beginTransaction();
Person p = (Person)session.load(Person.class, 3);
session.delete(p);
tx.commit();
session.close();
}
//删除测试2 删除临时状态
private static void testdelte2(){
Configuration config = new Configuration().configure();
ServiceRegistry sr = new ServiceRegistryBuilder().applySettings(
config.getProperties()).buildServiceRegistry();
SessionFactory factory = config.buildSessionFactory(sr);
Session session = factory.openSession();
Transaction tx = session.beginTransaction();
Person p = new Person();
p.setId(4);
session.delete(p);
tx.commit();
session.close();
}

扫描二维码关注公众号,回复: 3528805 查看本文章


猜你喜欢

转载自blog.csdn.net/youjiangtengwan1/article/details/54410299
今日推荐