반응형 분류 전체보기49 자바 ORM 표준 JPA 프로그래밍(2) - JPA 시작 메이븐과 사용 라이브러리 관리 메이븐 설정 파일 pom.xml 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 4.0.0 jpabook ch02-jpa-start1 1.0-SNAPSHOT 1.6 UTF-8 UTF-8 4.3.10.Final 1.4.187 org.hibernate hibernate-entitymanager ${hibernate.version} com.h2database h2 ${h2db.version} org.apache.maven.plugins maven-compil.. 2020. 12. 4. 자바 ORM 표준 JPA 프로그래밍(1) - JPA란 무엇인가? JPA란 무엇인가? JPA(Java Persistence API)는 자바 진영의 ORM 기술 표준이다. 어플리케이션과 JDBC 사이에서 동작한다. ORM이란? ROM(Object-Relational Mapping)은 이름 그대로 객체와 관계형 데이터베이스를 매핑한다는 뜻이다. ORM 프레임워크는 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결해준다. 객체를 마치 자바 컬렉션에 저장하듯이 ORM 프레임워크에 저장함으로써 데이터베이스에 INSERT 할 수 있게 된다. 그러면 ORM 프레임워크가 적절한 INSERT SQL을 생성해서 데이터베이스에 객체를 저장해준다. 위와 같이 ORM 프레임워크가 객체 모델과 데이터베이스 사이의 패러다임 불일치 문제를 해결해주기 때문에 개발자는 데이터 중심인.. 2020. 11. 18. 자바 ORM 표준 JPA 프로그래밍(1) - SQL을 직접 다룰 때 발생하는 문제점, 패러다임 불일치 SQL 매퍼(Mapper)를 사용하면 발생할 수 있는 문제점 데이터베이스와 객체간의 매핑 코드 작성이 반복적으로 이뤄짐 CRUD용 SQL이 반복적으로 작성된다. SQL에 의존적이기 때문에 테이블에 새로운 요구사항이나 칼럼이 추가되면 관련된 모든 SQL 코드에 수정이 요구됨. JPA를 사용하면 해결할 수 있는 문제점 CRUD SQL을 작성할 필요가 없다. 조회된 결과를 객체에 매핑하는 작업을 자동으로 처리한다. SQL이 아닌 객체 중심으로 개발하여 생산성과 유지보수가 편리해짐 데이터베이스 교체에 대한 비용이 줄어듬 SQL을 작성하지 않고 객체간의 관계만 명확히하여 데이터베이스 로직을 처리할 수 있어 비지니스 로직에 더욱 집중할 수 있게 해줌. SQL을 직접 다룰 때 발생할 수 있는 문제점 관계형 데이터베이.. 2020. 11. 16. (펌)Java8 Optional 의 ifPresent 활용 자바 8에 추가된 Optional이 제공하는 ifPresent를 사용해서 null을 확인하는 if 문을 줄일 수 있다. 1 2 3 4 5 6 7 8 Member member = memberRepository.findById(id); if (member != null) { if (member.isAdmin()) { member.addAdminPermissions(); } else { member.addDefaultPermissions(); } } Colored by Color Scripter cs 이런 코드가 있다고 가정해보자. memberRepository가 제공하는 findById를 Member 타입을 리턴하는데 이 값을 null일 수도 있기 때문에 if (member != null)과 같은 코드가 존.. 2020. 10. 4. 정규 표현식(regular expression) 정리 정규식은 문자열에서 특정 패턴을 찾거나 교체, 삭제 등 문자열을 원하는 형태로 편집하는 기능을 제공해 줍니다. 정규식은 자주 사용되지는 않지만, 어떤 경우에 일반적인 로직으로 처리하기 힘든것은 간편하게 처리할 수 있는 힘이 있습니다. 대부분의 언어들이 정규식을 가지고 있는데, 그 사용법들이 조금씩 다른것 같습니다. 자바 문자열 객체(java.lang.String)에서 정규식을 사용하는 자주 쓰는 메소드는 다음과 같습니다. 1 2 3 4 5 boolean matches(String regex) String replaceAll(String regex, String replacement) String[] split(String regex) cs matches(): 인자로 주어진 정규식에 매칭되는 값이 있는지 .. 2020. 9. 24. Java Stream(2) - 가공하기 및 결과 만들기 가공하기 전체 요소 중에서 다음과 같은 API를 이용해 내가 원하는 것만 뽑아낼 수 있다. 이러한 가공 단계를 중간 작업(intermediate operation)이라 한다. 이 작업은 스트림을 리턴하기 때문에 여러 작업을 이어 붙여(chaining) 작성할 수 있다. List names = Arrays.asList("Eric", "Elana", "Java"); 위의 예제에 적힌 List를 대상으로 예제를 살펴보자. Filtering 필터(filter)는 스트림 내 요소들을 하나씩 평가해 걸러내는 작업이다. 인자로 받는 Predicate는 Boolean을 리턴하는 함수형 인터페이스로 평가식이 들어간다. Stream filter(Predicate 2020. 7. 26. Java Stream(1) - 기본 개념 및 생성하기 Java 8의 스트림(Stream)을 살펴본다. 스트림 Streams Java 8에서 추가한 스트림(Streams)은 람다를 활용할 수 있는 기술 중 하나이다. Java 8 이전에선 배열 혹은 컬렉션 인스턴스를 다루는 방법은 반복문(for, foreach etc..)을 활용하여 각 요소를 하나씩 꺼내서 다루는 방법(Outer Iteration; 외부 반복)이었다. 이는 간단한 로직이면 크게 문제가 되지 않으나, 로직이 복잡해지면 복잡해질수록 코드가 복잡해져 여러 로직이 섞이게 되는 경우나 중첩 되는 경우가 많았고 이를 위한 별도의 메소드를 작성해야 하는데, 이 과정은 직관적이지 않고 버그를 유발하기 쉽다. 스트림은 외부 반복을 하지 않고 각 개별 요소에 대한 처리 로직을 수행할 수 있는 여러 함수를 제공.. 2020. 7. 22. 참고 견디고 이겨내자 재능? 노력? 무엇이 행복의 지표인가? 버락 오바마, 빌 게이츠 등 세계적 리더들에게 극찬을 받은 심리학자 안젤라 더크워스(Angela Duckworth)은 경쟁률이 높은 학교를 졸업하고, 박사 학위까지 받았으나 사실 날 때부터 재능이 뛰어난 천재가 아니였다. 그녀의 아버지는 그녀의 머리가 뛰어나지 않은 점을 항상 불안해 했으며, 그녀에게 종종 '넌 천재가 아니라 걱정이 된다'라는 메세지를 전달했다. 그녀는 "내가 아인슈타인이 아니었다는 사실이 아버지에게는 큰 실망이었던 거 같다."라 언급한 적도 있다. 그런 그녀가 시간이 흐르고 43살이 되는 해 전 세계에서 단 20명만 받는 천재들의 상, '맥아더 상'을 받게 됐다. 그녀가 상을 타게된 결정적인 이유가 있는데, 이는 그녀가 자신의 연구를 통해 '재능이.. 2020. 7. 21. REST API URI 패턴 REST URI는 심플하고 직관적이게 작성 REST API는 기본적으로 외부의 시스템과 리소스 교환을 위해 만들어지기 때문에 다른 사람이 사용하기에 어려움이 없고 직관적으로 이해할 수 있어야 한다. Depth를 깊게 만들어 복잡하게 만들기보단 최대 2 Depth를 유지하며 만드는 것이 이해가 편하다. /users /users/boards URI에 리소스명은 명사를 사용하도록 한다. REST API는 리소스에 대해서 행동을 정의하는 형태를 사용한다. POST : /users GET : /users GET : /users/{userId} 위에 예시를 보면 /users 리소스를 생성하라, /users 리소스의 전체 목록을 가져와라, /users 리소스를 {userId}를 통해 검색해서 가져와라 라는 의미로, .. 2020. 7. 15. 이전 1 2 3 4 5 6 다음 반응형