Search

ALCL_JDBC

ALCL_JDBC

μ•Œλ‘œν•˜ν΄λž˜μŠ€κ°€ λ§Œλ“  JDBC μœ ν‹Έλ¦¬ν‹° 라이브러리

alcl-jdbc

CRUD 및 데이터 처리λ₯Ό μžλ™μœΌλ‘œ μ μš©ν•΄μ£ΌλŠ” 라이브러리

데이터 μ†ŒμŠ€ μ„€μ •

db.properties

db.url=jdbc:mysql://127.0.0.1:3306/aloha?serverTimezone=Asia/Seoul&allowPublicKeyRetrieval=true&useSSL=false db.username=aloha db.password=123456 mapUnderscoreToCamelCase=true mapCamelCaseToUnderscore=true autoCommit=true sqlLog=true
Plain Text
볡사

μ‚¬μš©λ²•

1. Entity 클래슀 생성

@Tableκ³Ό @Pk μ–΄λ…Έν…Œμ΄μ…˜μ„ μ‚¬μš©ν•˜μ—¬ μ—”ν‹°ν‹° 클래슀λ₯Ό μ •μ˜ν•©λ‹ˆλ‹€. Lombok을 ν•¨κ»˜ μ‚¬μš©ν•˜λ©΄ νŽΈλ¦¬ν•©λ‹ˆλ‹€.
β€’
@Table("board") : 이 ν΄λž˜μŠ€κ°€ λ§€ν•‘λ˜λŠ” DB ν…Œμ΄λΈ”λͺ… μ§€μ •
β€’
@Pk : κΈ°λ³Έ ν‚€ ν•„λ“œ μ§€μ •
β€’
@Column(exist = false) : DB에 컬럼이 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” ν•„λ“œλ₯Ό λ‚˜νƒ€λƒ„ (예: λΉ„μ¦ˆλ‹ˆμŠ€ 둜직용 μž„μ‹œ ν•„λ“œ)
@Table("board") @Data @NoArgsConstructor @AllArgsConstructor @Builder public class Board { @Pk private Long no; private String id; private String title; private String writer; private String content; private Date createdAt; private Date updatedAt; @Column(exist = false) // μ‹€μ œ DB μ»¬λŸΌμ— μ—†λŠ” λ³€μˆ˜ private String test; }
Java
볡사

2. DAO 클래슀 생성

BaseDAOImpl<T>λ₯Ό 상속받아 DAO 클래슀λ₯Ό μƒμ„±ν•˜λ©΄ CRUD κΈ°λŠ₯이 μžλ™μœΌλ‘œ μ œκ³΅λ©λ‹ˆλ‹€.
package DAO; import com.alohaclass.jdbc.dao.BaseDAOImpl; import DTO.Board; public class BoardDAO extends BaseDAOImpl<Board> { // ν•„μš” μ‹œ λ©”μ„œλ“œ μ˜€λ²„λΌμ΄λ“œ κ°€λŠ₯ }
Java
볡사

3. DAO μ‚¬μš© μ˜ˆμ‹œ

BoardDAO boardDAO = new BoardDAO(); // INSERT Board newBoard = Board.builder() .id("testuser") .title("제λͺ©μž…λ‹ˆλ‹€") .writer("μž‘μ„±μž") .content("λ‚΄μš©μž…λ‹ˆλ‹€") .createdAt(new Date()) .updatedAt(new Date()) .build(); boardDAO.insert(newBoard); // SELECT Board board = boardDAO.select(1L); // UPDATE board.setTitle("μˆ˜μ •λœ 제λͺ©"); boardDAO.update(board); // DELETE boardDAO.delete(board);
Java
볡사

4. 기타 κΈ°λŠ₯ (BaseDAO μΈν„°νŽ˜μ΄μŠ€ κΈ°μ€€)

λ©”μ„œλ“œ
μ„€λͺ…
list()
전체 λͺ©λ‘ 쑰회
listBy(Map<String, Object> fields)
νŠΉμ • 쑰건 λͺ©λ‘ 쑰회
page() 및 page(...) (μ˜€λ²„λ‘œλ”©)
νŽ˜μ΄μ§• 처리 λͺ©λ‘ 쑰회
select(Object pk)
κΈ°λ³Έν‚€λ‘œ 쑰회
selectBy(Map<String, Object> fields)
쑰건 기반 단건 쑰회
insert(T entity)
μ—”ν‹°ν‹° μ €μž₯ (null μ œμ™Έ)
insertKey(T entity)
μ €μž₯ ν›„ PK κ°’ λ°˜ν™˜
update(T entity)
전체 ν•„λ“œ μ—…λ°μ΄νŠΈ
update(T entity, String... fields)
일뢀 ν•„λ“œ μ—…λ°μ΄νŠΈ
delete(Object pk)
PK 기반 μ‚­μ œ
deleteBy(Map<String, Object> fields)
쑰건 기반 μ‚­μ œ
in(String col, List<String> values)
IN 쑰건 λͺ©λ‘ 쑰회
count()
전체 λ ˆμ½”λ“œ 수 λ°˜ν™˜
count(String keyword, List<String> searchOptions)
검색 쑰건 개수
getSearchOptions(List<String> searchOptions)
LIKE 검색 쿼리 생성
getFilterOptions(Map<String, String> filterOptions)
ORDER BY 생성

5. 주의 사항

β€’
@PkλŠ” λ°˜λ“œμ‹œ ν•œ 개만 μ„ μ–Έν•΄μ•Ό ν•©λ‹ˆλ‹€.
β€’
@Table 이름은 μ‹€μ œ DB ν…Œμ΄λΈ” 이름과 μΌμΉ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€.
β€’
λ‚ μ§œ ν•„λ“œ(Date)λŠ” java.sql.Date λ˜λŠ” java.util.Date λͺ¨λ‘ μ§€μ›ν•©λ‹ˆλ‹€.
β€’
BaseDAO<T>λ₯Ό 직접 κ΅¬ν˜„ν•˜κ±°λ‚˜ ν™•μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 쿼리 μ΅œμ ν™” λ˜λŠ” νŠΉλ³„ν•œ 쑰건이 ν•„μš”ν•  경우 μ˜€λ²„λΌμ΄λ”©ν•˜μ—¬ μ‚¬μš©ν•˜μ„Έμš”.