本篇为struts-2.5.2和spring-3.2.0以及hibernate-4.2.21的整合开篇。

一、测试的数据库表。

用户、角色和权限关系表。数据库是Mysql5.6。为了考虑到一些特殊数据类型处理,用户表(类)中加入日期(birthday-Date)和枚举(gender-Gender)类型。

用户、权限和角色的数据库设计,使用用户、角色和权限,多表查询的设计(关系如上图)。如果多对多的关系应该可以设计如下。(用户和角色)

1、User.hbm.xml

User.java中有一个Set<Role> roles

2、Role.hbm.xml

Role.java中有一个Set<User> users

3、生成的表

会生成中间表(user_role),有两个键user_id,role_id,且为联合主键。

二、SessionFactoryUtil(工具类)

要使用Session来操作数据库,需要通过SessionFactory来建立了。

hibernate 3 通过buildSessionFactory来创建的,但在4已经不推荐了。

大致如下:

Configuration configuration = new Configuration();

configuration.configure(configFile);

sessionFactory = configuration.buildSessionFactory();

hibernate 4 推荐用到ServiceRegistry来建立。

public class HibernateUtil {
private static final SessionFactory sessionFactory = buildSessionFactory(); private static SessionFactory buildSessionFactory() {
try {
// Create the SessionFactory from hibernate.cfg.xml
Configuration configuration = new Configuration().configure(); //要注意这里要再configure(),即默认配置的cfg.xml。也可以指定
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry(); return configuration.buildSessionFactory(serviceRegistry); } catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
} public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}

最新文章

  1. android——数据库版本升/降级问题
  2. ssl_error_rx_record_too_long
  3. JS 中 this上下文对象的使用方式
  4. 开源的Android开发框架-------PowerFramework使用心得(二)图片异步加载ImageTask
  5. 【HDOJ】1244 Max Sum Plus Plus Plus
  6. ANDROID对文件的操作
  7. #DP# ----- OpenJudge最大子矩阵
  8. JS完成页面跳转并传参的方法|附加:循环遍历对象
  9. js华氏度转为摄氏度
  10. OPENSHIFT V3 免费部署 Java-Web
  11. (转载)SVM-基础(二)
  12. 面向对象(this的问题一)
  13. 还在用NuGet吗?大哥FuGet了解一下
  14. redis -hash(哈希.对象)
  15. 用深信服AC控制方位话机注册链路的开、关
  16. vue项目使用echarts按需引入实现地图动态显示效果时,报错:TypeError: Cannot read property &#39;dataToPoint&#39; of undefined
  17. laravel中db获取某个数据的具体字段值:
  18. 团队C++作业1
  19. brendangregg
  20. Java设计模式—状态模式

热门文章

  1. 【linux】less &amp;&amp;more
  2. ASP.NET 迭代控件获得行号
  3. java 线程池 ExeutorService
  4. CentOS下长时间ping网络加时间戳并记录到文本
  5. while循环-for循环
  6. python 构造mysql爆破器
  7. android studio 3.0.1使用笔记(二)
  8. oracle忘记sys及system密码
  9. CSS 第1练 搜索
  10. jeesite快速开发平台(七)----代码生成原理