java集成hibernate_java之spring之spring整合hibernate

这篇讲下spring和hibernate的整合

目录结构如下:

4f3c2aab88430b06b7ff6c20c8f805ae.png

1.新建java项目

2.导入jar包

antlr-2.7.7.jar

aopalliance.jar

aspectjweaver.jar

commons-logging.jar

dom4j-1.6.1.jar

hibernate-commons-annotations-4.0.5.Final.jar

hibernate-core-4.3.10.Final.jar

hibernate-jpa-2.1-api-1.0.0.Final.jar

jandex-1.1.0.Final.jar

javassist-3.18.1-GA.jar

jboss-logging-3.1.3.GA.jar

jboss-logging-annotations-1.2.0.Beta1.jar

jboss-transaction-api_1.2_spec-1.0.0.Final.jar

mysql-connector-java-5.1.20-bin.jar

spring-aop-4.1.6.RELEASE.jar

spring-aspects-4.1.6.RELEASE.jar

spring-beans-4.1.6.RELEASE.jar

spring-context-4.1.6.RELEASE.jar

spring-core-4.1.6.RELEASE.jar

spring-expression-4.1.6.RELEASE.jar

spring-jdbc-4.1.6.RELEASE.jar

spring-orm-4.1.6.RELEASE.jar

spring-tx-4.1.6.RELEASE.jar

spring-web-4.1.6.RELEASE.jar

3.编写vo类

User.java

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagecn.vincent.vo;2

3 importjava.io.Serializable;4

5 public class User implementsSerializable{6 private intid;7 privateString name;8 private intage;9 public intgetId() {10 returnid;11 }12 public void setId(intid) {13 this.id =id;14 }15 publicString getName() {16 returnname;17 }18 public voidsetName(String name) {19 this.name =name;20 }21 public intgetAge() {22 returnage;23 }24 public void setAge(intage) {25 this.age =age;26 }27

28 }

View Code

4.在src下,编写  hibernate.cfg.xml ,并且在cn.vincent.vo下编写vo类的映射文件 User.hbm.xml

hibernate.cfg.xml

/p>

"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

com.mysql.jdbc.Driver

jdbc:mysql:///test

root

root

org.hibernate.dialect.MySQLDialect

update

true

true

User.hbm.xml

/p>

"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

5.准备好工具包 cn.vincent.util 下的 HibernateUtil.java 文件

HibernateUtil.java

packagecn.vincent.util;importorg.hibernate.Session;importorg.hibernate.SessionFactory;importorg.hibernate.boot.registry.StandardServiceRegistryBuilder;importorg.hibernate.cfg.Configuration;importorg.hibernate.service.ServiceRegistry;public classHibernateUtil {private staticConfiguration cfg;private staticServiceRegistry registry;private staticSessionFactory factory;private static ThreadLocalsession;static{//初始化

cfg = newConfiguration().configure();

registry= newStandardServiceRegistryBuilder()

.applySettings(cfg.getProperties())

.build();

factory=cfg.buildSessionFactory(registry);

session=new ThreadLocal<>();

}//获取连接

public staticSession getSession(){if(session.get()==null){

session.set(factory.openSession());

}returnsession.get();

}//释放资源

public static voidclose(){if(session.get()!=null){

session.get().close();

session.set(null);

}

}

}

6.编写 cn.vincent.dao 包下的 UserDao.java ,及cn.vincent.dao.impl下的 UserDaoImpl.java 文件

UserDao.java

packagecn.vincent.dao;importjava.util.List;importcn.vincent.vo.User;public interfaceUserDao {public ListfindAll();

}

UserDaoImpl.java

packagecn.vincent.dao.impl;importjava.util.List;importorg.hibernate.Session;importcn.vincent.dao.UserDao;importcn.vincent.util.HibernateUtil;importcn.vincent.vo.User;public class UserDaoImpl implementsUserDao{

@Overridepublic ListfindAll() {

Session session=HibernateUtil.getSession();return session.createQuery("from User").list();

}

}

7.编写 cn.vincent.service 下的 UserService.java 和 cn.vincent.service.impl 下的 UserServiceImpl.java

UserService.java

packagecn.vincent.service;importjava.util.List;importcn.vincent.vo.User;public interfaceUserService {public ListfindAll();

}

UserServiceImpl.java

packagecn.vincent.service.impl;importjava.util.List;importcn.vincent.dao.UserDao;importcn.vincent.service.UserService;importcn.vincent.vo.User;public class UserServiceImpl implementsUserService{privateUserDao userDao;

@Overridepublic ListfindAll() {returnuserDao.findAll();

}public voidsetUserDao(UserDao userDao) {this.userDao =userDao;

}

}

8.编写spring配置文件:beans.xml

9.编写测试

新建名为 test 的source folder,并且在cn.vincent.service 下添加 UserServiceTest.java文件

packagecn.vincent.service;importjava.util.List;importorg.junit.Test;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;importcn.vincent.vo.User;public classUserServiceTest {

@Testpublic voidtestFindAll(){

ApplicationContext ac= new ClassPathXmlApplicationContext("beans.xml");

UserService us= ac.getBean(UserService.class);

List list =us.findAll();

System.out.println(list.size());

}

}

10.运行测试,查看效果

c1d0007e6302e65140cf9800cd18418f.png

结束!

补充:

11.在 spring 整合 hibernate 时,可以将 hibernate 的所有配置都写入 spring 中,这样就可以不要 hibernate.cfg.xml 配置文件:

beans.xml

org.hibernate.dialect.MySQLDialect

true

true

classpath:cn/sxt/vo/User.hbm.xml

12.spring的声明式事务

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值