基于Hibernate实现CRUD.docx
《基于Hibernate实现CRUD.docx》由会员分享,可在线阅读,更多相关《基于Hibernate实现CRUD.docx(17页珍藏版)》请在冰点文库上搜索。
基于Hibernate实现CRUD
实验五基于Hibernate实现CRUD
实验步骤
1.使用Hibernate设计通用接口实现对Java对象进行增查改删(CRUD)的工作;
具体要求:
实现CRUD接口具有通用性;可以在已有项
目中增加相应接口;提前设计好,最后一次实验演示,
并提交相关代码及本次实验报告。
hibernate.cfg.xml
xmlversion='1.0'encoding='utf-8'?
>
DOCTYPEhibernate-configurationPUBLIC
"-HibernateHibernateConfigurationDTD3.0EN"
"http:
www.hibernate.orgdtdhibernate-configuration-3.0.dtd">
--Databaseconnectionsettings-->
com.mysql.jdbc.Driver
jdbc:
mysql:
localhost:
3306hxj
root
root
--JDBCconnectionpool(usethebuilt-in)-->
--1-->
--SQLdialect-->
org.hibernate.dialect.MySQLDialect
--EnableHibernate'sautomaticsessioncontextmanagement-->
thread
--Disablethesecond-levelcache-->
org.hibernate.cache.NoCacheProvider
--EchoallexecutedSQLtostdout-->
true
--Dropandre-createthedatabaseschemaonstartup-->
update
---->
Teacher.java
packagecom.hibernate.model;
importjava.io.Serializable;
importjavax.persistence.Column;
importjavax.persistence.Entity;
importjavax.persistence.GeneratedValue;
importjavax.persistence.Id;
importjavax.persistence.Table;
importorg.hibernate.annotations.GenericGenerator;
@Entity
@Table(name="t_teacher")
publicclassTeacherimplementsSerializable{
privateintid;
privateStringusername;
privateintage;
@Id
@GenericGenerator(name="generator",strategy="increment")
@GeneratedValue(generator="generator")
@Column(name="id")
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
@Column(name="t_username")
publicStringgetUsername(){
returnusername;
}
publicvoidsetUsername(Stringusername){
this.username=username;
}
@Column(name="t_age")
publicintgetAge(){
returnage;
}
publicvoidsetAge(intage){
this.age=age;
}
}
获取SessionFactory的单例类:
HibernateUtil.java
packagecom.hibernate.util;
importorg.hibernate.SessionFactory;
importorg.hibernate.cfg.AnnotationConfiguration;
importorg.hibernate.cfg.Configuration;
publicclassHibernateUtil{
privatestaticfinalSessionFactorysessionFactory;
static{
try{
CreatetheSessionFactoryfromhibernate.cfg.xml
sessionFactory=newConfiguration().configure().buildSessionFactory();
sessionFactory=newAnnotationConfiguration().configure()
.buildSessionFactory();
}catch(Throwableex){
Makesureyoulogtheexception,asitmightbeswallowed
System.err.println("InitialSessionFactorycreationfailed."+ex);
thrownewExceptionInInitializerError(ex);
}
}
publicstaticSessionFactorygetSessionFactory(){
returnsessionFactory;
}
}
CURD操作:
TeacherManager.java
packagecom.hibernate.action;
importjava.util.List;
importorg.hibernate.Query;
importorg.hibernate.Session;
importorg.hibernate.Transaction;
importcom.hibernate.model.Person;
importcom.hibernate.model.Teacher;
importcom.hibernate.util.HibernateUtil;
publicclassTeacherManager{
publicstaticvoidmain(String[]args){
selectTeacher_By_Load
(1);
insertTeacher();
deleteTeacher();
selectAll();
updateTeacher();
insertTeacher();
createAndStoreTeacher();
select_All_By_Get
(2);
select_AllPerson_By_Get();
annotation();
HibernateUtil.getSessionFactory().close();
}
privatestaticvoidinsertTeacher(){
Sessionsession=HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Teacherteacher=newTeacher();
teacher.setUsername("aaa");
teacher.setAge(25);
session.save(teacher);
session.getTransaction().commit();
System.out.println("insertteachersuccessfully");
}
privatestaticvoiddeleteTeacher(){
intcount;
Sessionsession=HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Queryquery=session.createQuery("deleteTeacherwhereid=?
");
query.setParameter(0,1);
count=query.executeUpdate();
session.getTransaction().commit();
System.out.println("删除"+count+"条teacher记录");
}
privatestaticvoidselectTeacher_By_Load(intid){
Sessionsession=HibernateUtil.getSessionFactory().openSession();
Sessionsession=HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Teacherteacher=(Teacher)session.load(Teacher.class,id);
System.out.println("load方式commit之前====>Id:
"+teacher.getId()+"UserName:
"+teacher.getUsername()+"Age:
"+teacher.getAge());
session.getTransaction().commit();
System.out.println("load方式commit之后====》Id:
"+teacher.getId()+"UserName:
"+teacher.getUsername()+"Age:
"+teacher.getAge());
session.close();
}
privatestaticvoidselectTeacher_By_Get(intid){
Sessionsession=HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Teacherteacher=(Teacher)session.get(Teacher.class,id);
System.out.println("get方式commit之前====>Id:
"+teacher.getId()+"UserName:
"+teacher.getUsername()+"Age:
"+teacher.getAge());
session.getTransaction().commit();
System.out.println("get方式commit之后====>Id:
"+teacher.getId()+"UserName:
"+teacher.getUsername()+"Age:
"+teacher.getAge());
}
privatestaticvoidselectAll_By_Request(){
Sessionsession=HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Queryquery=session.createQuery("fromTeacherwhereid=?
andage=:
tage");
query.setParameter(0,2);
query.setInteger(0,2);
query.setParameter("tage",27);
query.setInteger("tage",27);
Listlistteacher=(List)query.list();
printList(listteacher);
}
privatestaticvoidselectAll(){
Sessionsession=HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Queryquery=session.createQuery("fromTeacher");
Listlistteacher=(List)query.list();
printList(listteacher);
}
privatestaticvoidupdateTeacher(){
intcount;
Sessionsession=HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Queryquery=session.createQuery("updateTeachersett_username='123'whereid=?
");
query.setInteger(0,2);
count=query.executeUpdate();
session.getTransaction().commit();
System.out.println("更新"+count+"条记录");
}
privatestaticvoidprintList(Listlistteacher){
for(Teacherteacher:
listteacher){
System.out.println("Id:
"+teacher.getId()+"UserName:
"+teacher.getUsername()+"Age:
"+teacher.getAge());
}
}