일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- GPT-4's answer
- oracle
- write by GPT-4
- 데이터베이스
- 웹 크롤링
- chatGPT's answer
- 역학
- kotlin
- flet
- write by chatGPT
- 인프라
- 시스템
- jpa
- 파이썬
- JVM
- spring data jpa
- Java
- 자바네트워크
- python
- 코틀린
- 자바
- Database
- spring integration
- android
- 고전역학
- 유닉스
- 리눅스
- 자바암호
- 소프트웨어공학
- NIO
- Today
- Total
기억을 지배하는 기록
Easy java Persistence 본문
EJP(Easy Java Persistence)는 관계형 데이터베이스 사용을 쉽게해주는 강력한 Java API 입니다.
EJP는 Mapping Annotation이나 XML Configuration이 필요 없으며, 특정 클래스를 상속 받거나 인터페이스를 구현할 필요가 없습니다.
하지만 “Automatic O-R Mapping” 이 부분을 생각 해보니 문제가 있을 수 있겠습니다.
EJP에서는 ORM(O-R Mapping)를 위해 Class명과 Table 명 사이, Method 명과 Tablet Column명 사이에 규칙을 지쳐야 하는데 Object의 “name”은 DB에서 “.*name.* 형태이어야 한다는 것 입니다. 그 외 Lazy Object Loading, 상속 관계에 있는 Object Query 등의 지원은 아쉽습니다.
한 가지 명심해야 할 것은 EJP는 JDBC 기반으로 만들어 졌으며, JPA 구현 라이브러리가 아니며, 둘 사이는 아무런 관계가 없다는 것입니다.
지원하는 Databases
MySQL
DB2
Oracle
Derby
HSQL
PostgreSQL
H2
간단한 사용법
Database Connecting
dbm = new DatabaseManager("mydb", 5, "com.mysql.jdbc.Driver", "jdbc:mysql://localhost/mydb");
또는
dbm = new DatabaseManager("mydb", 5, "jndiPath");
POJO Class “Customer” 정의
public class Customer
{
String username;
String firstName;
List support; //association
List orders; //association
...
// getters/setters
...
}
Loading a Customer
Customer customer = dbm.loadObject(new Customer("johnsmith"));
Loading all Customers
List<Customer> customers = dbm.loadObjects(new ArrayList<Customer>(), Customer.class);
Updating Customer
customer.setLastName("Smithman");
dbm.saveObject(customer);
내부적으로는 아래와 같은 Update SQL이 생성될 것 입니다.
update customers set last_name = 'SmithMan' where username = 'johnsmith';
Insert Customer
Customer customer = new Customer("Johnjones", "John", "Jones");
dbm.saveObject(customer);
Update와 Insert 모두 “saveObject”을 호출 합니다. EJP는 customer Object가 새로 생성된 것인지 변경된 것인지 알아서 판단해줍니다.
SQL 일부 사용
Customer customer = new Customer();
// find all customers where last name = Smith
customer.setLastName("Smith");
dbm.loadObject(customer);
dbm.loadObject(new Customer(), "where :lastName = ?", "Smith");
SQL 일부을 loadObject Method에서 사용하여 특정 Object을 쉽게 찾을 수 있습니다. 또한 “%”와 같은 Wiildcard도 사용이 가능합니다.
또한 Object Find 조건이 여러가지라면 아래와 같이 사용할 수도 있습니다.
customer.setFirstName("John");
customer.setLastName("Smith");
또는
dbm.loadObject(new Customer(), "where :firstName = ? and :lastName = ?", "John", "Smith");
Conclusion
EJP을 사용하기 위해서는 알아야 할 것은 명명규칙 뿐 다른 건 알 필요가 없습니다. 개발자를 충분히 편하고 게으르게 해줄 수 있을 것 같습니다. 하지만 보다 많은 것을 바란다면 JPA 구현 라이브러리를 권장합니다.
'오래된글 > Java' 카테고리의 다른 글
EJB CMP의 단점 (0) | 2018.04.07 |
---|---|
Scrolling Result Sets (0) | 2018.04.07 |
JDBC driver types (0) | 2018.04.07 |
객체 저장 : Storing Classes, Images and Other Large Objects (0) | 2018.04.07 |
What is the way of Direct Memory Access in Java? (0) | 2018.04.07 |