hibernate 5を使用する際の注意点

3704 ワード

SessionFactoryの作成
private static SessionFactory createSessionFactory() {
        /*
            //  SessionFactory
        //        
        Configuration cfg = new Configuration().configure();
        ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
            .applySettings(cfg.getProperties()).buildServiceRegistry();
        //         
        SessionFactory factory = cfg.buildSessionFactory(serviceRegistry);
          */

        StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder()
                .configure().build();
        Metadata metadata = new MetadataSources(standardRegistry)
                .getMetadataBuilder()
                .applyImplicitNamingStrategy(
                        ImplicitNamingStrategyJpaCompliantImpl.INSTANCE)
                .build();
        SessionFactory factory = metadata.getSessionFactoryBuilder().build();
        return factory;
    }

データベースにテーブルを作成する
MySQLデータベースをリンクするときに、文によってデータベースにテーブルを作成するときにデータベースの方言を設定するときは、MySQL 5 Dialectを使用しないと、テーブル作成文の最後の文Type=MyISAMのエラーが発生することに注意してください.

<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialectproperty>

Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
普通はhibernateです.cfg.xmlでデータベースをリンクする情報が間違っています
リスト範囲でクエリーするときにsetParameterListを使用する場合は、「in(:classroom)」のclassroomの場所ではclassなどの予約語は使用できません.
 @Test
    public void testSetParameterList10() {
        Session session = null;
        try {
            session = HibernateUtil.openSession();
            session.beginTransaction();
            /**
             * setParameterList        
             */
            List students = session.createQuery("select stu from Student stu where stu.classRoom.id in(:classroom)")
                    .setParameterList("classroom", new Integer[]{1, 2}).list();
            for (Student student : students) {
                System.out.println(student.getName() + "   " + student.getClassRoom());
            }
            session.getTransaction().commit();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            if (session != null) {
                session.getTransaction().rollback();
            }
        } finally {
            HibernateUtil.close(session);
        }
    }