整合hibernate和spring这样的文章已经很多了,下面我们来看看如何利用myeclipse的功能为整合提速咯
1.首先,创建工程,可以直接选创建J2EE web工程
(这....就不用贴图了吧)
2.导入spring, 选择myeclipse的add spring capabilities,注意把copy .....打勾(注,如果想要在spring的配置文件中配置hibernate的话, 一定要先导入spring)
3. 导入hibernate, 选择myeclipse的add hibernatecapabilities,注意把copy .....打勾
这时,myeclipse检测到已有spring,会问如何处理hibernate配置信息, 这里, 我们选择把hibernate的配置信息写在spring的配置信息中
接着,既然选择把在spring配置文件中配置hibernate信息,就需要设置hibernate的sessionfactory在配置文件中的bean id, 这里, 就设置为sessionFactory
然后要配置sessionFactory对应的数据源,注,数据源对应的bean id也需要设置,可以简单设置为dataSource
就不贴图咯
最后,选择sessionfactory对于的实现类,可以就用spring提供的LocalSessionFactory
这样, 我们就在项目中添加了spring和hibernate并将他们给予整合咯
3.应用:
配置好了环境,我们当然还得应用咯.下面给出我的代码
首先创建pojo和对应的hbm.xml
public class Test {
public Test() {
super ();
// TODO Auto-generated constructor stub
}
private int id;
private String name;
public int getId() {
return id;
}
public void setId( int id) {
this .id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this .name = name;
}
}
<! DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
< hibernate-mapping default-lazy ="false" auto-import ="true" package ="mapping" >
< class table ="test" name ="Test" >
< id name ="id" column ="test_id" type ="int" >
< generator class ="native" ></ generator >
</ id >
< property name ="name" type ="string" column ="name" ></ property >
</ class >
</ hibernate-mapping >
然后开发对应的DAO操作pojo, 因为我比较懒,所以直接使用HibernateTemplate进行操作
import java.util.List;
import org.hibernate.Criteria;
import org.springframework.orm.hibernate3.HibernateTemplate;
public class TestDAO {
private HibernateTemplate hibernateTemplate;
public TestDAO() {
super();
// TODO Auto-generated constructor stub
}
public Test getTest(String name) throws Exception {
Test t=new Test();
t.setName(name);
List list = this.getHibernateTemplate().findByExample(t);
if (list.isEmpty())
throw new Exception("No Such Record");
else
return (Test) list.get(0);
}
public void addTest(String name) {
Test test = new Test();
test.setName(name);
this.getHibernateTemplate().save(test);
}
public void updateTest(Test test){
this.getHibernateTemplate().update(test);
}
public void deleteTest(Test test){
this.getHibernateTemplate().delete(test);
}
public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
}
public void setHibernateTemplate(HibernateTemplate ht) {
this.hibernateTemplate = ht;
}
}
相应的,还需要修改下spring的配置文件
<! DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >
< beans >
< bean id ="dataSource" class ="org.apache.commons.dbcp.BasicDataSource" >
< property name ="driverClassName" >
< value > com.mysql.jdbc.Driver </ value >
</ property >
< property name ="url" >
< value > jdbc:mysql://localhost:3306/nirvana?useUnicode=true </ value >
</ property >
< property name ="username" >
< value > dyerac </ value >
</ property >
< property name ="password" >
< value ></ value >
</ property >
</ bean >
< bean id ="sessoinFactory" class ="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
< property name ="dataSource" >
< ref bean ="dataSource" />
</ property >
< property name ="hibernateProperties" >
< props >
< prop key ="hibernate.dialect" > org.hibernate.dialect.MySQLDialect </ prop >
< prop key ="connection.characterEncoding" > utf8 </ prop >
< prop key ="hibernate.show_sql" > true </ prop >
< prop key ="hibernate.hbm2ddl.auto" > update </ prop >
</ props >
</ property >
< property name ="mappingDirectoryLocations" >
< list >
< value > src/mapping </ value >
</ list >
</ property >
</ bean >
< bean id ="hibernateTemplate" class ="org.springframework.orm.hibernate3.HibernateTemplate" >
< property name ="sessionFactory" >
< ref bean ="sessoinFactory" />
</ property >
< property name ="allowCreate" >
< value > true </ value >
</ property >
</ bean >
< bean id ="testDAO" class ="mapping.TestDAO" >
< property name ="hibernateTemplate" >
< ref bean ="hibernateTemplate" />
</ property >
</ bean >
</ beans >
最后的最后,开发一个测试类:
import mapping.TestDAO;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class Tester {
public static void main(String args[]) {
ApplicationContext ctx = new FileSystemXmlApplicationContext(
"src/applicationContext.xml");
TestDAO test = (TestDAO) ctx.getBean("testDAO");
//test.addTest("dyerac");
try {
Test t = test.getTest("bsbs");
System.err.println(t.getName());
//t.setName("bsbs");
//test.updateTest(t);
//test.deleteTest(t);
} catch (Exception e) {
System.err.println(e);
}
}
}