博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring 与Hibernate 整合
阅读量:6713 次
发布时间:2019-06-25

本文共 6237 字,大约阅读时间需要 20 分钟。

Hibernate 与Spring整合,还需要一个支持整合的jar包.

spring-orm-3.2.0.RELEASE.jar
整合方式之一引入式整合: 使用Hibernate.cfg.xml文件1.在src目录下创建一个UserModle的实体类
UserModle:

public class UserModle {   public String name;   public Integer age;   public String getName() {       return name;   }   public void setName(String name) {       this.name = name;   }   public Integer getAge() {       return age;   }   public void setAge(Integer age) {       this.age = age;   }   }

2.编写与之对应的映射文件UserModle.hbm.xml

UserModle.hbm.xml:

3.在Hibernate的核心配置文件Hibernate.cfg.xml中添加次映射文件信息

Hibernate.cfg.xml:

com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/ssh
root
123456
org.hibernate.dialect.MySQLDialect
true
false
 

</hibernate-configuration>

4.在src下创建dao包.在该包下创建接口UserDao以及UserDaoImpl
UserDao:

public interface UserDao {

/**           * 添加用户           *           * @param um  用户           */          void save(UserModle um);          /**           *  删除用户           * @param um  删除的用户           */          void delete(UserModle um);          /**           * 更新用户           * @param um  更新的用户           */          void update(UserModle um);          /**           *  根据id查找用户           * @param id  用户id           * @return  返回当前用户           */          UserModle findById(Integer id);          /**           * 查找所有用户           * @return           */          List
findAll(); }

UserDaoImpl:

public class UserDaoImpl implements UserDao {

// 提供Hibernate模版
private HibernateTemplate hibTemplate;

public void setHibernateTemplate(HibernateTemplate temp) {      this.hibTemplate = temp;  }  public void save(UserModle um) {      hibTemplate.save(um);  }  public void delete(UserModle um) {      hibTemplate.delete(um);  }  public void update(UserModle um) {      hibTemplate.update(um);  }  public UserModle findById(Integer id) {      return hibTemplate.get(UserModle.class, id);  }  public List
findAll() { return hibTemplate.find("from UserModle"); }

}

5.在src下创建service包.在该包下创建接口UserService以及UserServiceImpl
UserServic:

public interface UserService {

/**     * 保存用户     *     * @param um     */    void savaUser(UserModle um);    /**     * 删除用户     *     * @param um     *            删除的用户     */    void deleteUser(UserModle um);    /**     * 更新用户     *     * @param um     *            更新的用户     */    void updateUser(UserModle um);    /**     * 根据id查找用户     *     * @param id     *            用户id     * @return 返回当前用户     */    UserModle findUserById(Integer id);    /**     * 查找所有用户     *     * @return     */    List
findAllUser();}

UserServiceImpl:

public class UserServiceImpl implements UserService {

private UserDao dao;   public void setUserDao(UserDao dao) {       this.dao = dao;   }   public void savaUser(UserModle um) {       dao.save(um);   }   public void deleteUser(UserModle um) {       dao.delete(um);   }   public void updateUser(UserModle um) {       dao.update(um);   }   public UserModle findUserById(Integer id) {       return dao.findById(id);   }   public List
findAllUser() { // TODO Auto-generated method stub return dao.findAll(); }

}

6.在Spring配置文件applictionContext.xml中进行相应配置
applictionContext.xml:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns=""
xmlns:xsi="" xmlns:aop=""
xmlns:tx="" xmlns:context=""
xsi:schemaLocation="
[url=]
[url=]
[url=]
[url=]
[url=]
[url=]
[url=]
[url=]
">

如果不添加事务注解驱动的话. 执行测试会发sql语句, 但是数据库不会更新数据.

7.添加事务注解
在 UserDAO接口类前添加注解 @Transactional

@Transactional // 添加事务注解

public interface UserDao {

...

}

  1. 测试

public class TestApp {

public static void main(String[] args) {        UserModle um = new UserModle();        um.setId(1);        um.setAge(20);        um.setName("fy");        ApplicationContext context = new ClassPathXmlApplicationContext(                "applicationContext.xml");        UserService userService = context.getBean("userService",                UserService.class);        userService.savaUser(um);    }}

整合方式之二: 不使用Hibernate.cfg.xml文件(推荐使用)重新创建一个文件applicationContext_independent.xml(其实就是更改applicationContext.xml中部分地方)

applicationContext_independent.xml:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns=""
xmlns:xsi="" xmlns:aop=""
xmlns:tx="" xmlns:context=""
xsi:schemaLocation="
[url=]
[url=]
[url=]
[url=]
[url=]
[url=]
[url=]
[url=]
">

//独立整合不再引入Hibernate.cfg.xml 文件.而是将文件内容抽成bean对象,这就是独立整合
// hibernate前缀必须有
org.hibernate.dialect.MySQLDialect
true
false
cn/fy/domain/UserModel.hbm.xml

</beans>

测试

public class TestApp {

public static void main(String[] args) {        UserModle um = new UserModle();        um.setId(1);        um.setAge(20);        um.setName("fy");        ApplicationContext context = new ClassPathXmlApplicationContext(                "applicationContext_independent.xml");        UserService userService = context.getBean("userService",                UserService.class);        userService.savaUser(um);    }}

转载于:https://blog.51cto.com/13587708/2118602

你可能感兴趣的文章
bzoj1941[Sdoi2010]Hide and Seek
查看>>
IT兄弟连 Java Web教程 经典面试题2
查看>>
利用setTimeoutc处理javascript ajax请求超时
查看>>
三、Java基础工具(1)_常用类——字符串
查看>>
文献管理与信息分析》第二讲作业
查看>>
java 遍历arrayList的四种方法
查看>>
根据不同的产品id获得不同的下拉选项 (option传多值)
查看>>
css3新增属性:多列(column)
查看>>
redis 主从配置和集群配置
查看>>
手机3D游戏开发:自定义Joystick的相关设置和脚本源码
查看>>
java 数组偶数排在奇数前面
查看>>
window.frames["detailFrm"].isSubmitting = true;//?起什么作用
查看>>
ASCII表
查看>>
idea之debug
查看>>
什么是真正的流程管理?流程管理的是与不是。
查看>>
SEO实践:SEO友好的URL结构
查看>>
洛谷P1613 跑路
查看>>
无论所有题,一定要先分析清楚,所有eade case和逻辑都满足后,再动笔
查看>>
softlayer
查看>>
python各种模块,迭代器,生成器
查看>>