class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
--①定义好的那个datasource注入给LocalSessionFactroyBean的那个属性就可以了->
--②和hibernatemaping有关的信息--->
--在entity中可能有多个映射文件这里提供了一个list-->
com/etc/entity/Users.hbm.xml
<!
-③hibernateProperties主要用来设置数据库方言是否显示sql语句以及ddl--->
org.hibernate.dialect.MySQLDialect
true
true
update
1.新建webProject,增加支持Spring的完整包;
spring-tx-3.2.15.RELEASE.jar
spring-orm-3.2.15.RELEASE.jar
spring-jdbc-3.2.15.RELEASE.jar
spring-expression-3.2.15.RELEASE.jar
spring-core-3.2.15.RELEASE.jar
spring-context-support-3.2.15.RELEASE.jar
spring-context-3.2.15.RELEASE.jar
spring-beans-3.2.15.RELEASE.jar
spring-aop-3.2.15.RELEASE.jar
2.增加Hibernate支持包(参考之前的笔记和项目):
3.其他支持包:
commons-dbcp-1.2.2.jar
commons-pool-1.4.jar
log4j-1.2.17.jar
slf4j-log4j12-1.5.8.jar
mysql-connector-java-5.1.5-bin.jar
增加外部jar支持的原则是,宁可少,根据错误提示增加缺失的包进来;也不要一下子加太多.不能重复添加同名的jar。
4.添加(copy)log4j.properties文件到src目录下:
(可以取少量配置)
###directlogmessagestostdout###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE}%5p%c{1}:
%L-%m%n
###directmessagestofilehibernate.log###
#log4j.appender.file=org.apache.log4j.FileAppender
#log4j.appender.file.File=hibernate.log
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE}%5p%c{1}:
%L-%m%n
###setloglevels-formoreverboseloggingchange'info'to'debug'###
log4j.rootLogger=warn,stdout
#log4j.logger.org.hibernate=info
#log4j.logger.org.hibernate=debug
###logHQLqueryparseractivity
#log4j.logger.org.hibernate.hql.ast.AST=debug
###logjusttheSQL
#log4j.logger.org.hibernate.SQL=debug
###logJDBCbindparameters###
#log4j.logger.org.hibernate.type=info
#log4j.logger.org.hibernate.type=debug
###logschemaexport/update###
log4j.logger.org.hibernate.tool.hbm2ddl=debug
###logHQLparsetrees
#log4j.logger.org.hibernate.hql=debug
###logcacheactivity###
#log4j.logger.org.hibernate.cache=debug
###logtransactionactivity
#log4j.logger.org.hibernate.transaction=debug
###logJDBCresourceacquisition
#log4j.logger.org.hibernate.jdbc=debug
###enablethefollowinglineifyouwanttotrackdownconnection###
###leakageswhenusingDriverManagerConnectionProvider###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace
5.新建(copy)jdbc.properties文件,该文件可以在applicationContext.xml中进行读取:
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:
mysql:
//localhost:
3306/testdb
jdbc.username=root
jdbc.password=
6.建立实体类:
/**
*实体类
*@authorknowno
*
*/
publicclassUsersimplementsSerializable{
privateintid;
privateStringname;
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
}
7.映射文件:
xmlversion="1.0"?
>
DOCTYPEhibernate-mappingPUBLIC
"-//Hibernate/HibernateMappingDTD3.0//EN"
"
--name="属性名"-->
--属性名-->
Dao的部分,以后都按照这个标准走,一接口,一对应的实现类;
8.Dao接口:
packagecom.etc.dao;
importjava.util.List;
importcom.etc.entity.Users;
publicinterfaceUserDao{
publicvoidadd(Usersu);
publicvoidupdate(Usersu);
publicListquery();
publicvoiddel(Usersu);
}
9.Dao的实现类:
importorg.springframework.orm.hibernate3.support.HibernateDaoSupport;
在spring的jar中.
在HibernateDaoSupport中有一个HibernateTemplatehibernateTemplate
这个属性去查看他的源码,发现这个类中有很多方法和hibernate中的sessioin接口下的方法非常相似.
在使用hibernateTemplate的时候,要注意需要提供一个SessioNFactory给他.
/**
*Dao实现类
*@authorknowno
*
*/
publicclassUserDaoImplextendsHibernateDaoSupportimplementsUserDao{
publicvoidadd(Usersu){
System.out.println("useradd");
getHibernateTemplate().save(u);
}
publicvoidupdate(Usersu){
System.out.println("userupdate");
super.getHibernateTemplate().update(u);
}
publicListquery(){
System.out.println("userquery");
Queryquery=getSession().createQuery("fromUsers");
returnquery.list();
}
publicvoiddel(Usersu){
System.out.println("userdelete");
super.getHibernateTemplate().delete(u);
}
}
10.简单的实现dao的业务类:
/**
*服务类
*@authorknowno
*
*/
publicclassUserService{
privateUserDaoud;
publicUserDaogetUd(){
returnud;
}
publicvoidsetUd(UserDaoud){
this.ud=ud;
}
publicvoidaddUser(Usersu){
ud.add(u);
}
publicvoidupdateUser(Usersu){
ud.update(u);
}
publicListqueryUser(){
returnud.query();
}
publicvoiddelete(Usersu){
ud.del(u);
}
}
11.增加applicationContext.xml(copy)文件到src目录下:
xmlversion="1.0"encoding="UTF-8"?
>
//www.springframework.org/schema/beans"
xmlns:
xsi="http:
//www.w3.org/2001/XMLSchema-instance"
xsi:
schemaLocation="http:
//www.springframework.org/schema/beans
http:
//www.springframework.org/schema/beans/spring-beans-3.0.xsd">
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
classpath:
jdbc.properties
class="mons.dbcp.BasicDataSource">
--hibernater的xml方式
再利用hibernateProperties来配置相关属性-->
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
com/etc/entity/Users.hbm.xml
org.hibernate.dialect.MySQLDialect
true
true
update
测试类:
publicclassTestQuery{
publicstaticvoidmain(String[]args){
BeanFactorybf=newClassPathXmlApplicationContext(
"applicationContext.xml");
UserServiceus=(UserService)bf.getBean("us");
/*
*Usersu=newUsers();u.setName("yyyyyy");us.addUser(u);
*/
Listlist=us.queryUser();
for(Usersusers:
list){
System.out.println(users.getId()+","+users.getName());
}
}
}
Spring3整哈Hibernate3事务:
编程式事务管理
Spring的编程式事务管理概述
在Spring出现以前,编程式事务管理对基于POJO的应用来说是唯一选择。
用过Hibernate的人都知道,我们需要在代