hibernate 5を使用する際の注意点
3704 ワード
SessionFactoryの作成
データベースにテーブルを作成する
MySQLデータベースをリンクするときに、文によってデータベースにテーブルを作成するときにデータベースの方言を設定するときは、MySQL 5 Dialectを使用しないと、テーブル作成文の最後の文Type=MyISAMのエラーが発生することに注意してください.
Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
普通はhibernateです.cfg.xmlでデータベースをリンクする情報が間違っています
リスト範囲でクエリーするときにsetParameterListを使用する場合は、「in(:classroom)」のclassroomの場所ではclassなどの予約語は使用できません.
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);
}
}