Hibernate Annotationを使ってみるソース
Applicant というクラスを applicant テーブルにマッピングします。 JUnitで動作。
Applicant.java
import java.sql.Date; import javax.persistence.Entity; import javax.persistence.Id; /** * 受講申込者情報 */ @Entity abstract public class Applicant { private int userId; private String account; @Id public int getUserId(){ ゲッター } public void setUserId(int userId) { セッター } public String getAccount() { ゲッター } public void setAccount(String account) { セッター } /* この後多くのフィールドが続く */ }
ApplicantTest.java
import java.util.List; import org.hibernate.Session; public class ApplicantTest extends DBTestBase { // ここにマッピングするクラスを書く public Class<?>[] targetClasses() { return new Class<?>[]{ Applicant.class }; } // テストケース public void testList() { Session session = openSession(); Applicant app = (Applicant)session.load(Applicant.class, 1); assertNotNull(app); List applicants = session.createCriteria(Applicant.class).list(); for(Applicant ap : (List<Applicant>)applicants) { System.out.println(ap.account); } assertTrue(applicants.size()>0); } }
DBTestBase.java
import junit.framework.TestCase; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.AnnotationConfiguration; public abstract class DBTestBase extends TestCase { abstract protected Class<?>[] targetClasses(); private SessionFactory sessionFactory; public void setUp() { String app = Applicant.class.getCanonicalName(); String packageName = app.substring(0, app.lastIndexOf('.')); AnnotationConfiguration configuration = new AnnotationConfiguration() .addPackage(packageName); for (Class<?> clazz : targetClasses()) { configuration.addAnnotatedClass(clazz); } sessionFactory = configuration.configure().buildSessionFactory(); } public Session openSession() { return sessionFactory.openSession(); } }
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- Database connection settings --> <property name="connection.driver_class">org.postgresql.Driver</property> <property name="connection.url">jdbc:postgresql://localhost/データベース名</property> <property name="connection.username">*****</property> <property name="connection.password">*****</property> <!-- JDBC connection pool (use the built-in) --> <property name="connection.pool_size">1</property> <!-- SQL dialect --> <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property> <!-- Enable Hibernate's automatic session context management --> <property name="current_session_context_class">thread</property> <!-- Disable the second-level cache --> <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> <!-- Echo all executed SQL to stdout --> <property name="show_sql">true</property> </session-factory> </hibernate-configuration>