Hibernate回顾CRUD
Hibernate配置文件
"-//Hibernate/HibernateConfigurationDTD//EN"
"src/dtd/hibernate-configuration-3.0.dtd">
jdbc:mysql://localhost:3306/itheima?characterEncoding=UTF-8
com.mysql.jdbc.Driver
root
1234
org.hibernate.dialect.MySQLDialect
update
true
resource="com/sanmao/hibernate/crud/domain/Person.hbm.xml"/>
`这里写代码片`
packagecom.sanmao.hibernate.crud.domain;
importjava.io.Serializable;
/
Createdbyrooton16-9-18.
/
publicclassPersonimplementsSerializable{
//实现序列化能够用二进制在网络传输,所以分布式要实现中的类要实现序列化
privateLongpid;
privateStringname;
privateStringsex;
publicLonggetPid(){
returnpid;
}
publicvoidsetPid(Longpid){
this.pid=pid;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetSex(){
returnsex;
}
publicvoidsetSex(Stringsex){
this.sex=sex;
}
@Override
publicStringtoString(){
return"Person{"+
"pid="+pid+
",name=''"+name+''\''''+
",sex=''"+sex+''\''''+
''}'';
}
}
持久化类的映射文件
"src/dtd/hibernate-mapping-3.0.dtd">
创建表
packagecom.sanmao.hibernate.createtable;
importorg.hibernate.SessionFactory;
importorg.hibernate.cfg.Configuration;
importorg.junit.Test;
/
Createdbyrooton16-9-18.
/
publicclassCreateTableTest{
@Test
publicvoidtestCreateTable(){
//加载了hibernate的文件
Configurationconfiguration=newConfiguration();
//要求的配置文件的路径
//1.必须是classpath的根目录
//2.文件的名称必须是hibernate.cfg.xml
//加载方式一
configuration.configure();
//方法二,指定要加载的文件
//configuration.configure("");//参数为hibernate配置文件的路径及名称
//
SessionFactorysessionFactory=configuration.buildSessionFactory();
}
}
增删改查
packagecom.sanmao.hibernate.crud.test;
importcom.sanmao.hibernate.crud.domain.Person;
importorg.hibernate.Session;
importorg.hibernate.SessionFactory;
importorg.hibernate.Transaction;
importorg.hibernate.cfg.Configuration;
importorg.junit.Test;
importjava.util.List;
/
完成crud的操作
/
publicclassCRUDTest{
/
存储操作/
@Test
publicvoidtestSave(){
/
创建sessionFactory
1.sessionFactory是单例的
2.hibernate的配置文件的信息
,映射文件的信息,持久化类的信息全部在sessionFactory中
3.sessionFactory封装的信息都是公共的数据
4.sessionFactory本身是线程安全的,
/
Configurationconfiguration=newConfiguration();
configuration.configure();//加载了配置文件
SessionFactorysessionFactory=configuration.buildSessionFactory();
//跟HTTP中的Session没有一点关系,就是Hibernate内部自己的Session
//保存操作是由session来完成的
//openSession方法相当于利用session打开了一个数据库链接
Sessionsession=sessionFactory.openSession();
//开启一个事务
//hibernate的事务默认是关闭的,必须手动开启,可以保证数据的安全性
Transactiontranswww.sm136.comaction=session.beginTransaction();
Personperson=newPerson();
person.setName("三毛2");
person.setSex("男");
session.save(person);
transaction.commit();
//相当于关闭了一个连接
session.close();
}
/
查询操作/
@Test
publicvoidtestQueryAllPerson(){
Configurationconfiguration=newConfiguration();
configuration.configure();
SessionFactorysessionFactory=configuration.buildSessionFactory();
Sessionsession=sessionFactory.openSession();
/
HQL:hibernatequerylanguage
/
//返回所有persons
Listpersons=session.createQuery("fromPerson").list();
for(Personp:persons){
System.out.println(p);
}
session.close();
}
/
通过主键获取对象/
@Test
publicvoidgetPersonById(){
Configurationconfiguration=newConfiguration();
configuration.configure();
SessionFactorysessionFactory=configuration.buildSessionFactory();
Sessionsession=sessionFactory.openSession();
/
第一个参数为持久化类的class形式
第二个参数就是主键,类型必须和持久化类中的主键保持一致
/
//在持久化类中主键类型为LONG所以,要将1转换为LONG类型
//Personperson=(Person)session.get(Person.class,1);
Personperson=(Person)session.get(Person.class,1L);
System.out.println(person);
session.close();
}
/
更新对象/
@Test
publicvoidtestUpdatePerson(){
Configurationconfiguration=newConfiguration();
configuration.configure();
SessionFactorysessionFactory=configuration.buildSessionFactory();
Sessionsession=sessionFactory.openSession();
//开启事务
Transactiontransaction=session.beginTransaction();
Personperson=(Person)session.get(Person.class,1L);
person.setName("yongchao");
//应该是根据主键定位
session.update(person);
transaction.commit();
session.close();
}
/
删除操作/
@Test
publicvoidtestDeletePerson(){
Configurationconfiguration=newConfiguration();
configuration.configure();
SessionFactorysessionFactory=configuration.buildSessionFactory();
Sessionsession=sessionFactory.openSession();
//开启事务
Transactiontransaction=session.beginTransaction();
Personperson=(Person)session.get(Person.class,1L);
session.delete(person);
transaction.commit();
session.close();
}
}
|
|