• 测试用数据库表设计和SessionFactory


    本篇为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;
        }
    }
  • 相关阅读:
    数据库数据实时采集Maxwell
    消息中间件之Kafka相关知识
    linux安装软件配置
    ETL工具Sqoop
    Hadoop 概述(三)
    全网最全的权限系统设计方案(图解)
    WebSocket 是什么原理?为什么可以实现持久连接
    封装 axios 拦截器实现用户无感刷新 access_token
    明明加了唯一索引,为什么还是产生了重复数据?
    动态组件和插槽
  • 原文地址:https://www.cnblogs.com/jway1101/p/5795609.html
Copyright © 2020-2023  润新知