Hibernate NamingStrategy 방식으로 월간표에 로그 쓰기
Hibernate 구성 파일에 hbm2ddl을 설정하는 테이블을 자동으로 생성합니다.자동 업데이트
<hibernate-configuration>
<session-factory>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="connection.url">jdbc:mysql:///test</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="myeclipse.connection.profile">mysql</property>
<property name="hbm2ddl.auto">[b]update[/b]</property>
<mapping class="db.TDiykey" />
<mapping class="db.Person" />
</session-factory>
</hibernate-configuration>
/**
*
*
* @author hzhlu
*
*/
public class MyNamingStrategy extends DefaultNamingStrategy {
private static final long serialVersionUID = 1L;
public static final MyNamingStrategy INSTANCE = new MyNamingStrategy();
private static final DecimalFormat df = new DecimalFormat();
private static ArrayList<String> rollingTables = new ArrayList<String>();
static {
rollingTables.add("PERSON");
df.applyPattern("00");
}
/**
*
*
* @see net.sf.hibernate.cfg.NamingStrategy#tableName(java.lang.String)
*/
public String tableName(String tableName) {
String stroeTable = tableName;
//
if (rollingTables.contains(tableName.toUpperCase())) {
stroeTable += "_" + df.format(Calendar.getInstance().get(Calendar.YEAR) % 100)
+ df.format(Calendar.getInstance().get(Calendar.MONTH) + 1);
System.out.println("store record into [" + stroeTable + "]");
}
return stroeTable;
}
}
자동으로 생성된 HibernateSessionFactory 추가 이름 정책을 수정하려면 한 줄만 추가하면 됩니다.
configuration.setNamingStrategy(MyNamingStrategy.INSTANCE);
public class MySessionFactory {
private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
private static Configuration configuration = new AnnotationConfiguration();
private static org.hibernate.SessionFactory sessionFactory;
private static String configFile = CONFIG_FILE_LOCATION;
static {
try {
//
configuration.setNamingStrategy(MyNamingStrategy.INSTANCE);
configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
System.err.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
테스트 프로그램
public class MyNamingStrategyTest {
/**
* @param args
*/
public static void main(String[] args) {
test2();
}
public static void test2() {
Session session = MySessionFactory.getSession();
Transaction tx = session.beginTransaction();
Person person = new Person();
person.setId(new Random().nextInt());
person.setFirstName("firstName");
person.setLastName("lastName");
session.save(person);
TDiykey tDiykey = new TDiykey();
tDiykey.setDbid("" + System.currentTimeMillis() % 999999);
tDiykey.setNotes("notes");
session.save(tDiykey);
tx.commit();
session.close();
System.out.println("ok!");
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.