读书人

Spring中配合hibernate应用的简单例子

发布时间: 2012-08-24 10:00:21 作者: rapoo

Spring中配合hibernate使用的简单例子

最近在看SPRING和hibernate,学习了spring和hibernate之间整合,下面举出一个例子予以说明.
?
??? 首先,可以注入的是sessionfactory,因为sessionfactory的Datasource可以用spring注入.比如一个下面的例子,是对对象进行增加的

接口IUserDAO:
public interface IUserDAO {
??? public void insert(User user);
?}
User.java:
public class User {
????? private String name;
?
?????? public String getName() {
??????? return name;
??? }
???
??? public void setName(String name) {
??????? this.name = name;
??? }
}

UserDao.java:
(这里省去了import等东西了)
public class UserDAO implements IUserDAO {
??? private SessionFactory sessionFactory;
???
??? public UserDAO() {
??? }
???
??? public UserDAO(SessionFactory sessionFactory) {
??????? this.setSessionFactory(sessionFactory);
??? }
????
//注入sessionFactory
??? public void setSessionFactory(
??????????????????????? SessionFactory sessionFactory) {
??????? this.sessionFactory = sessionFactory;
??? }
???
??? public void insert(User user) {
?????? Session session = sessionFactory.openSession();
?????????? Transaction tx= session.beginTransaction();
???????? session.save(user);?
???????? tx.commit();
??????? session.close();
??? }

关键的base-config.xml:
<beans>?

//基本的datasource,存放实际连接串等东西
??? <bean id="dataSource"
????????? >
??????? <property name="dataSource">
??????????? <ref bean="dataSource"/>
??????? </property>
??????? <property name="mappingResources">
??????????? <list>
??????????????? <value>liaoo/springhibernatear/User.hbm.xml</value>
??????????? </list>
??????? </property>
??????? <property name="hibernateProperties">
??????????? <props>
??????????????? <prop key="hibernate.dialect">
??????????????????? org.hibernate.dialect.MySQLDialect
??????????????? </prop>
??????????? </props>
??????? </property>
??? </bean>


??? <bean id="userDAO" class="liao.springhibernate.UserDAO">
??????? <property name="sessionFactory">
??????????? <ref bean="sessionFactory"/>
??????? </property>
??? </bean>

可以看到,这里对userDAO类的sessionFactory进行了注入,而参考到其中的bean-config.xml里sessionFactory里实现.可以看到,可以将datasource注入到LocalSessionFactoryBean中.要注意的是org.springframework.orm.hibernate3.LocalSessionFactoryBean是hibernate 3整合使用的,org.springframework.orm.hibernate.LocalSessionFactoryBean是hibernate 2中使用的.

最后是测试程序
public static void main(String[] args) {
??????? ApplicationContext context =
??????????? new FileSystemXmlApplicationContext(
??????????????????? "beans-config.xml");
????????
????????????? IUserDAO userDAO =? (IUserDAO) context.getBean("userDAO");
?????????????? User user = new User();
????????? ? user.setName("jackyrong");
???????????? userDAO.insert(user);

<script type="text/javascript"></script>

读书人网 >软件架构设计

热点推荐