最近我參與了北美一家銀行的審計系統的後台軟件設計和開發工作
在我們實際進入集成這兩個技術之前
使用Hibernate 問題之一是使用Hibernate Framework訪問數據庫的客戶應用必須依賴Hibernate APIs如Configuration
我們沒有打算研究Spring包裡集成的各種API
下面的應用使用Oracle數據庫
現在讓我們創建叫做Activitylog POJO代碼用於存儲從Activitylog表取出的數據
package com
public class Activitylog {
private String id;
private String name;
private String taskcode;
private Timestamp tasktime;
public Activitylog () {
}
public String getId(){
return id;
}
public void setId(String id){
this
}
public String getName(){
return name;
}
public void setName(String name){
this
}
public String getTaskcode(){
return taskcode;
}
public void setTaskcode(String taskcode){
this
}
public Timestamp getTasktime(){
return tasktime;
}
public void setTasktime(Timestamp tasktime){
this
}
public String toString(){
return
+ taskcode +
}
}
注意toString() 方法重寫是為了Activitylog 對象的顯示
我們已經在數據庫中創建了
Activitylog
<?xml version=
<!DOCTYPE hibernate
<hibernate
<class name=
<id name=
<generator class=
</id>
<property name=
<column name=
</property>
<property name=
<column name=
</property>
<property name=
<column name=
</property>
</class>
</hibernate
注意映射文件是一個Xml文件並且它的名字是Activitylog
這部分處理配置各種Spring需要的信息
spring
<?xml version=
<beans xmlns=
xmlns:xsi=
xsi:schemaLocation=
<bean id=
<property name=
<property name=
<property name=
<property name=
</bean>
?
</beans>
上面bean定義了一個類型
現在讓我們定義第二個Spring Bean
<bean id=
class=
<property name=
<property name=
<list>
<value>com/xxxx/audit/pojo/Activitylog
</list>
</property>
<property name=
<value>hibernate
</property>
</bean>
當配置SessionFactory Bean時
第三個重要的Spring Bean是Hibernate Template
<bean id=
class=
<property name=
<ref bean=
</property>
</bean>
最後的Bean定義是Dao類
<bean id=
<property name=
<ref bean=
</property>
</bean>
注意一個引用指向 ActivitylogDao類
如上所述
ActivitylogDao
package javabeat
import java
import org
import org
import org
import org
public class ActivitylogDao {
private HibernateTemplate hibernateTemplate;
public void setHibernateTemplate(HibernateTemplate hibernateTemplate){
this
}
public HibernateTemplate getHibernateTemplate(){
return hibernateTemplate;
}
public Activitylog getActivitylog (final String id){
HibernateCallback callback = new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException
return session
}
};
return (Activitylog)hibernateTemplate
}
public void saveOrUpdate(final Activitylog activitylog){
HibernateCallback callback = new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException
session
return null;
}
};
hibernateTemplate
}
}
此類利用了Hibernate API (特別是Session對象) 用於數據訪問
SpringHibernateTest
package javabeat
import org
import org
import orgre
import orgre
import org
public class SpringHibernateTest {
public static void main(String[] args) {
Resource resource = new FileSystemResource(
BeanFactory factory = new XmlBeanFactory(resource);
Activitylog activitylog = new Activitylog ();
activitylog
activitylog
activitylog
activitylog
ActivitylogDao activitylogDao = (ActivitylogDao)factory
activitylogDao
Activitylog actResult = activitylogDao
System
}
}
最後
本文討論了Spring 和Hibernate的集成
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28810.html