테이블 LOCATION에서 CRUD 작업을 수행하고있는 간단한 최대 절전 모드 응용 프로그램에서 작업하고 있습니다. maven 3.0, hibernate 3.6, oracle 10g, java 8을 사용 중입니다.최대 절전 모드 선택 쿼리가 데이터베이스에서 최신 레코드를 반환하지 않습니다.
이 4 가지 작업을 수행하고 있습니다. 1) 테이블 위치에 행 삽입 (성공) 2) 해당 행을 검색하여 상태 확인 (성공) 3) 동일한 레코드의 한 열 업데이트 (성공, 데이터베이스 업데이트 중) 4) 같은 행 검색 다시. 여기 캐치가 있습니다. 단계 3에서 이미 업데이트 된 행의 업데이트 된 상태가 표시되지 않습니다. 2 단계 검색에서 반환 된 결과가 나타납니다.
여기 내 메인 클래스입니다.
public class App {
public static void main(String[] args) {
Session session = HibernateUtil.getSessionFactory().openSession();
//step 1
session.beginTransaction();
saveLocation(session);
session.getTransaction().commit();
//step 2
session.beginTransaction();
retrieveLocation(session);
session.getTransaction().commit();
//step 3
session.beginTransaction();
updateLocation(session);
session.getTransaction().commit();
//step 4
session.beginTransaction();
retrieveLocation(session);
session.getTransaction().commit();
}
private static void saveLocation(final Session session) {
Location location = new Location();
location.setZip("751001");
location.setCity("Bhubaneswar");
location.setCountry("India");
location.setRegion("Asia pacific");
session.save(location);
}
private static void retrieveLocation(final Session session) {
Query query = session.createQuery("from org.bhawani.practice.hibernate.location.Location where zip = :zip");
query.setParameter("zip", "751001");
List<Location> locations = query.list();
for (Location location : locations) {
System.out.println("City: " + location.getCity());
}
}
private static void updateLocation(final Session session) {
Query query = session.createQuery(
"update org.bhawani.practice.hibernate.location.Location set city = :city where zip = :zip");
query.setParameter("city", "Cuttack");
query.setParameter("zip", "751001");
query.executeUpdate();
}
}
여기 여기 내 최대 절전 모드 매핑 XML입니다 Location.java
package org.bhawani.practice.hibernate.location;
public class Location {
private String zip;
private String city;
private String country;
private String region;
public Location() {
}
public String getZip() {
return zip;
}
public void setZip(String zip) {
this.zip = zip;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getRegion() {
return region;
}
public void setRegion(String region) {
this.region = region;
}
}
내 모델 클래스입니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="org.bhawani.practice.hibernate.location.Location"
table="LOCATION">
<id name="zip" type="string">
<column name="ZIP" />
<generator class="assigned" />
</id>
<property name="city" type="string">
<column name="CITY" />
</property>
<property name="country" type="string">
<column name="COUNTRY" />
</property>
<property name="region" type="string">
<column name="REGION" />
</property>
</class>
</hibernate-mapping>
다음은 내 테이블 설명입니다. 여기
Name Null Type
------- -------- ------------------
ZIP NOT NULL VARCHAR2(255 CHAR)
CITY VARCHAR2(255 CHAR)
COUNTRY VARCHAR2(255 CHAR)
REGION VARCHAR2(255 CHAR)
는 같은
Location
인스턴스가 첫 번째 레벨 캐시에서 가져온 이유입니다, 당신은 쿼리 사이도 폐쇄 나 세션을 삭제 (영속 컨텍스트)입니다 내 최대 절전 모드 설정 파일
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration SYSTEM
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@127.0.0.1:1521:XE</property>
<property name="hibernate.connection.username">hr</property>
<property name="hibernate.connection.password">admin</property>
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="hibernate.default_schema">HR</property>
<property name="show_sql">true</property>
<mapping resource="org/bhawani/practice/hibernate/location/Location.hbm.xml" />
</session-factory>
</hibernate-configuration>
답장을 보내 주셔서 감사합니다. –