요구 사항은 런타임시 특정 열과 테이블 이름이 선택된 데이터베이스에서 레코드를 가져 오는 것입니다.최대 절전 모드에서 런타임시 테이블 이름과 열 이름을 전달하는 테이블 레코드를 얻으려면 어떻게해야합니까?
Java, Hibernate 및 Mysql을 사용하고 있습니다. JDBC를 사용하는 것이 가능합니다. 하지만 최대 절전 모드를 사용하고 싶습니다. 사람이 사전에
감사를 알고 있다면
게시 힌트는,
요구 사항은 런타임시 특정 열과 테이블 이름이 선택된 데이터베이스에서 레코드를 가져 오는 것입니다.최대 절전 모드에서 런타임시 테이블 이름과 열 이름을 전달하는 테이블 레코드를 얻으려면 어떻게해야합니까?
Java, Hibernate 및 Mysql을 사용하고 있습니다. JDBC를 사용하는 것이 가능합니다. 하지만 최대 절전 모드를 사용하고 싶습니다. 사람이 사전에
감사를 알고 있다면
게시 힌트는,
글쎄, Hibernate는 당신이 최대 절전 모드와 같이 쓸 수 찾고있는 단지 JDBC보다 훨씬 더 많은 작업을 수행 할 수 있습니다 : 당신이 테이블 이름을 볼 수 있고 열이 될 수
Query query = session.createSQLQuery(
"select s.stock_code from stock s where s.stock_code = :stockCode")
.setParameter("stockCode", "7277");
List result = query.list();
을 즉, JDBC와 동등한 수준이며, 심지어 더 간단 할 수도 있습니다. 매개 변수를 사용할 필요가 없으며 코드에서 모듈 식으로 쿼리를 작성할 수 있습니다. 자세한 내용 https://www.mkyong.com/hibernate/hibernate-native-sql-queries-examples/
답장을 보내 주셔서 감사합니다. 귀하의 도움은 매우 소중합니다. –
Hibernate
는 JDBC
보다 더 많은 기능을 가지고 있습니다. 가장 좋은 기능은 Hibernate
입니다. Object Oriented Principles
입니다. 엔티티에 Polymorphism
, Inheritance
, Encapsulation
을 사용할 수 있습니다.
BaseEntity
클래스가 있어야하며 다른 모든 클래스는이 클래스에서 확장되어야합니다.
public class BaseEntity {
}
그런 다음 다른 모든 클래스가이 클래스를 확장합니다. 다른 두 개의 클래스 나 엔티티가 있다고 가정합니다.
User.class
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Table(name = "USERS")
@Entity
public class User extends BaseEntity implements Serializable {
@Id
@Column(name = "ID")
private int id;
@Column(name = "NAME")
private String name;
@Column(name = "SURNAME")
private String surname;
public User() {
}
public User(int id, String name, String surname) {
this.id = id;
this.name = name;
this.surname = surname;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
}
Info.class는
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Table(name = "INFO")
@Entity
public class Info extends BaseEntity implements Serializable {
@Column(name = "TEXT")
private String text;
@Id
@Column(name = "ID")
private int id;
public Info() {
}
public Info(String text, int id) {
this.text = text;
this.id = id;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
또한 당신은 다음과 같이되어 configuration.hbm.xml
귀하의 DAO
각 클래스에 대한 mapping
태그를 추가해야합니다.
public List getList(BaseEntity baseEntity, String[] columnNames) {
Criteria criteria = session.createCriteria(baseEntity.getClass(), "be");
ProjectionList projectionList = Projections.projectionList();
for (String columnName : columnNames) {
projectionList.add(Projections.property("be." + columnName), columnName); // adding column for selection
}
criteria.setProjection(projectionList);
criteria.setResultTransformer(new AliasToBeanResultTransformer(baseEntity.getClass())); // for mapping result to entity
return criteria.list();
}
public static void main(String[] args) {
String[] columnNames = {"name", "surname"}; // columnNames which you want to select
List<Info> users = new GeneralDAO().getList(new User(), columnNames); // you can pass any class User, Info or etc.
}
에 대한
참조 스스로를 시도하십시오. 그래서 문제를 해결하기위한 것이지 새로운 분야에 소개하는 것이 아닙니다. 아마도 설명서가 시작하기에 좋은 곳일지도 모릅니다. – loki