개발공부(173)
-
(2) JPA 시작
2.2 H2 DB설치 already port in use Exception : C:/Users/[username] > h2.properties 파일에서 port 설정 변경할 수 있습니다. H2 콘솔 server 실행할 때 Database "C:/Users/klyhy/test" not found, either pre-creat : JDBC URL : jdbc:h2:~/test 로 먼저 연결한다음 (DB가 설치됨) localhost를 연결합니다. 2.5 JPA 설정 교재에선 hibernate 의존을 사용했지만 스터디 프로젝트는 hiberante core, jpa가 내장된 spring-boot-starter-data-jpa를 사용합니다. spring.datasource로 시작하는 속성을 사용합니다. DB 방언..
2021.06.21 -
(1) JPA 소개
회사에서 Mybatis를 사용해 빚어지는 SQL 휴먼에러와 유지보수에 대한 어려움 때문에 JPA를 공부해 도입시키고자 스터디를 시작했습니다. 현재 5명인 스터디는 정해진 순서대로 맡은 챕터를 스터디 시간에 발표하는 방식으로 진행되고 있습니다. 요약본은 마크다운 파일로 Github 레포지토리에 커밋하기 때문에 같은 양식을 유지합니다. JPA 장점 CRUD SQL 작성할 필요가 없습니다. 성능에 대한 문제는 SQL을 직접 작성하는 것으로 보완할 수 있습니다. 네이티브 SQL로 직접 작성할 수도 있고 쿼리 힌트도 작성할 수 있습니다. 객체 중심으로 생산성과 유지보수가 확연히 좋아집니다. e.g. MySQL 데이터베이스에서 오라클 데이터베이스로 변경할 때 어렵지 않습니다. SQL을 직접 작성할 때 발생하는 문제..
2021.06.21 -
(1) MariaDB 로컬 사용자 추가
회사 DB를 로컬로 다뤄보려고 코드 내 사용자/패스워드와 로컬 DB(localhost) 연동, DB파일 로컬 export 두 가지 과정을 진행했습니다. DB는 MariaDB 기준입니다. 1. localhost 사용자 추가 혼자서 프로젝트를 만들 땐 root 사용자만 있어도 충분했기 때문에 사용자를 추가해본 적이 없었지만, 회사에 들어오니 필수가 되었습니다. 사용 툴은 DB 툴, 윈도우 기준 cmd(커맨드 프롬프트) 입니다. 저는 MariaDB를 사용했는데 MySQL Workbench와 HeidiSQL 두 가지 툴을 사용했습니다. 제가 볼 땐 큰 차이는 없습니다. DB 툴을 사용하면서 cmd까지 사용하는 이유는 root 권한 때문입니다. 새로운 사용자를 추가할 때 root 권한이 필요한 경우 (grant ..
2021.06.08 -
000. git upstream으로 다 쳐놓은 코드를 리셋시키다.
프로그래머스 실력 체크 문제 주문관리 API를 IDE로 옮겨 풀려고 코드를 클래스별로 복사했습니다. 프로젝트 환경은 spring boot initalize로 새로 생성하기가 귀찮아 기존있던 연습용 프로젝트 디렉토리를 복사해 로컬에 붙여넣었습니다. 모두 마치고 IDE 터미널을 이용해 git repo와 연동시켰습니다. 하지만 로컬 디렉토리 전체를 복사했기 때문에 .git/config 파일도 완전히 동일하단 것을 크게 주의하지 않아 git upstream을 잘못 사용해 결국 기존 프로젝트 repo가 clone되어 작성했던 코드가 모두 날라갔습니다. 근본 원인은 복붙한 .git/config 파일을 완전히 리셋해주지 않았던 것이었고 다른 원인은 git branch가 비었다는 오류가 뜨면서 push가 되지 않자 g..
2021.06.06 -
(23) Mybatis - resultMap
Mybatis에서 result 값을 치환해주는 기능은 두 가지가 있습니다. 바로 resultType과 resultMap 입니다(둘은 같이 사용될 수 없습니다!!). resultType이 alias를 이용해 Mapper 클래스 경로를 치환(축약)시킬 수 있다면 resultMap은 DB의 컬럼명과 Model 클래스 필드값을 매핑해줄 수 있습니다. (참고로 JPA 사용할 땐 CAMEL CASE -> SNAKE CASE 변환 설정을 해주는 기능과 유사하다고 보입니다.) 1 2 3 4 5 6 7 8 9 10 11 12 13 select user_id, user_name, hashed_password from some_table where id = #{id} Colored by Color Scripter cs my..
2021.06.02 -
(2) Serialization
객체를 byte-stream형식으로 작성하는 메커니즘이며 Hibernate, RMI, JPA 등에 사용됩니다. 반대의 경우, byte-stream를 객체로 변경시키는 건 deserialization이라고 합니다. writeObject() ; serialization와 readObject();deserialization 메서드가 있습니다. 참고자료 : 김영한님 인프런 강의 질의답변 Serialize(직렬화) : - (서버에 전송할) 객체를 byte 스트림으로 변환 - 내부에서 직렬화를 사용할 경우는 드물지만, JPA 표준 스펙에 Entity에 Serializeble을 구현하도록 명시돼 있기 때문에 구현하는 것이 좋음 연관 인터페이스 : Serializable : 메서드나 멤버가 없는 marker형 인터페이..
2021.06.02