• 测试用数据库表设计和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;
        }
    }
  • 相关阅读:
    try catch 和\或 finally 的用法
    postgresql与oracle对比
    今天遇到个let: not found
    NTLM相关
    【搜藏】net use命令拓展
    【shell进阶】字符串操作
    【网摘】网上邻居用户密码
    测试导航
    关系代数合并数据 left join
    真正的程序员
  • 原文地址:https://www.cnblogs.com/jway1101/p/5795609.html
Copyright © 2020-2023  润新知