| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- javaJVM
- java 자료구조 활용
- java기본자료형
- javaJRE
- java map
- 프로그래머스제일작은수
- java map 저장
- java map 출력
- java최솟값구하기
- 격파르타비전공자
- java참조자료형
- java list 출력
- 격파르타합격후기
- java set 저장
- java알고리즘
- 격파르타후기
- 항해99후기
- 작은수제거하기
- 코딩부트캠프후기
- 항해15기
- java알고리즘문제풀이
- sqld자격증합격
- 노베이스부트캠프
- 인터프린터언어
- 격파르타장점
- java list 저장
- java set 출력
- 프로그래머스
- 비전공자sqld
- 컴파일
- Today
- Total
목록분류 전체보기 (259)
코딩과 결혼합니다
면접에서 자꾸 떨어져 부족함을 느끼고 아르바이트를 병행하며인프런의 JPA, MVC 관련 강의들을 들었다.JPA 부분을 배우며 적용하고자 하였는데 SQL에 대한 이해가 부족하다 판단되어 이후SQLD와 정보처리기사 자격증을 함께 준비하였다. 하루 1~2시간 정도 공부하며 필기에 합격하여 기뻐하기도 잠시 실망스러운 일이 생겼다.학교를 자퇴했지만 106학점 이상 들은 게 있어서 정보처리기사 자격증에 응시할 수 있을 줄 알았지만,,,학점은행제의 18학점을 포함해야 했고 인정이 되지 않았다고 한다 ㅠ학점은행제 1학기가 끝나면 다시 학점인정신청을 하고 7월에 다시 도전해보려 한다! 이틀 뒤 25일 sqld 시험이 있다. 무려 응시료가 5만 원... 절대로 붙을 것이야.그리고 이후에는 개인 프로젝트를 다시 시작하거나 ..
JOIN 데이터베이스에서 여러 테이블을 연결하여 관련된 데이터를 함께 가져오는데 사용된다. JOIN 절은 크게 INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN 으로 나눌 수 있다. INNER JOIN String jpql = "SELECT e FROM Employee e INNER JOIN e.department d WHERE d.name = 'IT'"; TypedQuery query = entityManager.createQuery(jpql, Employee.class); List resultList = query.getResultList(); "Employee" 엔티티와 "Department" 엔티티를 이너조인하여 부서 이름이 'IT'인 직원들을 가져오기 이너 조인은 ..
벌크성 수정 쿼리 데이터베이스의 특정 작업을 한 번에 대량으로 처리하는 쿼리. [순수 JPA] public int bulkAgePlus(int age) { return em.createQuery( "update Member m set m.age = m.age + 1" + " where m.age >= :age") .setParameter("age", age) .executeUpdate(); } 조건에 만족하는 데이터에 +1을 하는 쿼리. executeUpdate()로 데이터들을 업데이트한다. [Spring Data Jpa] @Modifying @Query("update Member m set m.age = m.age + 1 where m.age >= :age") int bulkAgePlus(@Param(..
도메인 주도 설계 Domain - Driven Design 트랜잭션 스크립트 패턴 이전에는 트랜잭션 스크립트 패턴으로 설계를 하였었다. Service에 모든 비즈니스 로직이 있고 비즈니스 절차에 따라 도메인 객체를 이용해 처리하는 방식이었다. 도메인 객체는 단순하게 속성값만 이용되는 정보 묶음의 역할만을 하였다. 서비스에서는 대부분의 비즈니스 로직 처리가 이뤄지므로 중복되는 코드가 계속 생겨날 수 있고 이러한 점이 유지보수를 어렵게 하였다. 더하여 당시에는 테스트 케이스를 작성하지 않았는데(못함), 테스트의 복잡성을 높이고 관리하기 어려운 테스트 코드를 발생시킨다고 한다. public class SignUpService { //... public void signup(SignupRequestDto req..
이번에 JPA에 대한 강의들을 듣고 그동안 내가 쓰던 코드들이 성능상 많이 좋지 않았고, 또한 기술에 대한 이해가 부족하여 어떠한 기능들을 왜 사용하는지 잘 몰랐음을 깨달았다. 이력서를 넣는 것은 잠시 멈추고, 최근에 진행했던 [Game Crew] 프로젝트를 전체적으로 리팩터링 하여 성능을 최적화해보고자 한다. 프로젝트의 규모가 크지 않고, 거의 전체적인 부분을 손대야 할 것 같아 복습하는 마음으로 처음부터 다시 만들어 가보고자 한다. 이러한 이유로 프로젝트 명을 [Game Crew V2]라고 한다. ERD [멤버] - [게시물] : 멤버는 여러 개의 게시물을 가질 수 있다. (1 : N) [멤버] - [평가기록] : 멤버는 여러 번 평가를 받을 수 있다. (1 : N) [멤버] - [참가인원] - [게..
파라미터 바인딩 @Query("select m from Member m where m.username in :names") List findByNames(@Param("names") List names); 쿼리 메서드는 복잡할수록 굉장히 길어진다. 그래서 위와 같이 파라미터 바인딩을 사용할 수 있는데, 위치 기반, 이름 기반 등의 방법이 있다. select m from Member m where m.username = ?0 //위치 기반 select m from Member m where m.username = :name //이름 기반 위치 기반의 경우에는 유지보수에 취약할 수 있기 때문에 이름 기반을 사용하도록 한다. 반환타입 List findListByUsername(String username); ..
순수 JPA를 사용했을 때에는 개발자가 직접 쿼리를 짜서 조건에 맞는 데이터를 가져와야 했다. 매번 간단한 쿼리도 모두 짜야해서 굉장히 번거롭다. public List findByUsernameAndAgeGreaterThan(String username, int age) { return em.createQuery("select m from Member m where m.username = :username and m.age > :age") .setParameter("username", username) .setParameter("age", age) .getResultList(); 반면 스프링 데이터 JPA는 메서드 이름을 분석하여 JPQL을 생성하고 실행한다. public interface MemberR..
순수한 JPA 기반 Repository를 구현했을 때와 Spring Data Jpa 기반으로 구현했을 때를 비교해 본다. 순수 JPA @Repository public class MemberJpaRepository { @PersistenceContext private EntityManager em; public Member save(Member member) { em.persist(member); return member; } public void delete(Member member) { em.remove(member); } public List findAll() { return em.createQuery("select m from Member m", Member.class) .getResultList..