配色: 字号:
Hibernate回顾CRUD
2016-09-20 | 阅:  转:  |  分享 
  
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();

}

}

献花(0)
+1
(本文系网络学习天...首藏)