简单的手工hibernate程序示例
本文讲述了简单的手工hibernate程序示例。分享给大家供大家参考。具体如下:
今天学习了下hibernate,写了个小的手工程序,总结下,
首先创建数据库表:
createtableincrement_testr(idbigintnotnull,namechar(10),primarykey(id));
eclipse下,新建工程。
新建数据库表的映射,这里使用手工方式完成:
IncrementTester.java
publicclassIncrementTester{ privateLongid; privateStringname; publicIncrementTester(){} publicIncrementTester(Stringname){ this.name=name; } publicLonggetId(){ returnthis.id; } privatevoidsetId(Longid){ this.id=id; } publicStringgetName(){ returnthis.name; } publicvoidsetName(Stringname){ this.name=name; } }
对应编写映射xml文件
IncrementTester.hbm.xml
PUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
private
实现具体功能的类BussinessService
importjava.lang.reflect.*; importorg.hibernate.*; importorg.hibernate.cfg.*; importjava.io.*; importjava.sql.*; importjava.util.*; publicclassBussinessService{ publicstaticSessionFactorysessionFactory; static{ try{ Configurationconfig=newConfiguration().configure(); sessionFactory=config.buildSessionFactory(); }catch(Exceptione){ e.printStackTrace(); } } publicvoidfindAllObjects(StringclassName){ Sessionsession=sessionFactory.openSession(); Transactiontx=null; try{ tx=session.beginTransaction(); Listobjects=session.createQuery("from"+className).list(); for(Iteratorit=objects.iterator();it.hasNext();){ Longid=newLong(0); IncrementTesterxx=(IncrementTester)it.next(); id=xx.getId(); System.out.println("IDof"+className+":"+id+"name:"+xx.getName()); } tx.commit(); }catch(Exceptione){ e.printStackTrace(); }finally{ session.close(); } } publicvoidsaveObject(Objectobject){ Sessionsession=sessionFactory.openSession(); Transactiontx=null; try{ tx=session.beginTransaction(); session.save(object); tx.commit(); }catch(Exceptione){ e.printStackTrace(); if(tx!=null){ tx.rollback(); } }finally{ session.close(); } } publicvoiddeleteAllObject(StringclassName){ Sessionsession=sessionFactory.openSession(); Transactiontx=null; try{ tx=session.beginTransaction(); Queryquery=session.createQuery("deletefrom"+className); query.executeUpdate(); tx.commit(); }catch(Exceptione){ e.printStackTrace(); if(tx!=null){ tx.rollback(); } }finally{ session.close(); } } }
实现主函数:
publicclasstest{ /** *@paramargs */ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub Stringname="IncrementTester"; BussinessServiceaa=newBussinessService(); aa.deleteAllObject(name); Objecto1=null; try{ o1=Class.forName(name).newInstance(); ((IncrementTester)o1).setName("caijie"); aa.saveObject(o1); o1=Class.forName(name).newInstance(); ((IncrementTester)o1).setName("gufeng"); aa.saveObject(o1); }catch(Exceptione){ e.printStackTrace(); } aa.findAllObjects(name); } }
hibernate配置文件:hibernate.cfg.xml
PUBLIC"-//Hibernate/HibernateConfigurationDTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
org.hibernate.dialect.MySQLDialect
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/test
root
root
true
增加相应的库,运行后成功得到结果:
Hibernate:deletefromINCREMENT_TESTR Hibernate:selectmax(ID)fromINCREMENT_TESTR Hibernate:insertintoINCREMENT_TESTR(NAME,ID)values(?,?) Hibernate:insertintoINCREMENT_TESTR(NAME,ID)values(?,?) Hibernate:selectincrementt0_.IDasID0_,incrementt0_.NAMEasNAME0_fromINCREMENT_TESTRincrementt0_ IDofIncrementTester:1name:caijie IDofIncrementTester:2name:gufeng
希望本文所述对大家的JSP程序设计有所帮助。