SQL 쿼리 빌더 util을 개발하여 SQL 쿼리를 쉽고 빠르게 작성할 수 있습니다. 나는 실제 쿼리 빌더를 위해 정렬 된 기본 사항을 가지고 있지만 데이터베이스 엔터티 (즉 테이블과 열)에 대한 문자열 리터럴/상수에 대한 일부 양식 사용과 관련하여 문제가 있습니다. 각 (방법을 둥지 내가 열거에 꽤 읽었데이터베이스 엔티티 용 Java 빌더 패러다임
String sqlQuery = queryBuilder.select(Tables.Users.FirstName)
.where(Tables.Users.Age >= 10)
.build()
.toString();
및하지만 난 모든 테이블에 대한 열거를 만들어야합니다 것처럼 보인다 : 내가하고 싶은 것은 이런 일을하는 것입니다 특정 열을 포함). 가능하다면 모든 테이블과 각 테이블의 모든 열을 포함하는 하나의 클래스를 갖고 싶습니다. 이 날은 단순히 뭔가를 호출하여 문자열 리터럴 "을 구축"할 수 있도록해야합니다
Tables.Address (returns the string value for 'address' table)
Tables.Address.Country (returns the string value for 'country' column)
이 내가 열거를 사용하여 지금까지 시도했다하지만 내가 원하는 꽤 것입니다.
public enum Table {
Users("users"),
Addresses("addresses"),
private String tableName;
Table(String tableName) {
this.tableName = tableName;
}
public String getName() {
return tableName;
}
}
public enum Column {
ID(Table.Users, "id"),
NAME(Table.Users, "name");
private Table table;
private String columnName;
Column(Table table, String columnName) {
this.table = table;
this.columnName = columnName;
}
public String getColumnName() {
return columnName;
}
}
기본적으로 테이블은 컴파일시 알려지지 않아야합니다. 따라서 상수의 형태는 적용되지 않습니다. – RealSkeptic
여기서 다루려고하는 데이터베이스 유형에 대한 정보를 좀 더 알려줄 수 있습니다. 메타 데이터는 확실히 갈 수있는 방법이지만, 메타 데이터를 얻는 방법은 DB 공급 업체가 변경 될 때 크게 달라집니다. –
관계형 데이터베이스가 아닌 경우. Java JDBC는 데이터베이스 메타 데이터에 대해 벤더에 독립적 인 액세스를 제공합니다. – duffymo