전체 글 183

12. 값 타입의 비교 ~

값 타입 : 인스턴스가 달라도 그 안에 값이 같으면 같은 것으로 봐야 함 int a = 10; int b = 20; public class ValudMain{ public static void main(String args){ int a = 10; int b = 10; System.out.println("a == b " + (a == b)); Address address1 = new Address ("city", "street", "10000"); Address address1 = new Address ("city", "street", "10000"); System.out.println("address1 == address2 : " + (address1== address2)); } } 위에 결과는 알아서..

Spring 2021.07.22

11. 값 타입과 불변 객체~

값 타입은 복잡한 객체 세상을 조금이라도 단순화하려고 만든 개념이다! 따라서 값 타입은 단순하고 안전하게 다룰 수 있어야 한다. 코드를 예를 들어 설명해 보면 두개의 Member 가 하나의 address 를 참조하고 있는 상황인데 member1과 member2에 같은 address를 삽입하고 member2의 address값을 바꾸면 오잉? 연결되어 있는 member1의 값도 바뀌게 된다. 기존의 의도는 member2에 저장된 address의 값만 바꾸고 싶었는데 member1도 바뀌는 버그가 발생하는 것이다! 복잡한 경우에는 이 오류를 찾기 정말 힘들다고 한다. 이를 방지하기 위해서는 새로운 address객체를 하나 더 생성해서 그것을 이용해 member2의 값을 바꿔야 한다. package helloj..

Spring 2021.07.21

7. 데몬

데몬?? 데몬 들어보면 왜자꾸 유희왕 데몬이 생각나징 데몬도 이런 것이라 보면된다 즉, 늘 세팅되잇는 프로그램이다. 그 하나의 사례로 웹 서버를 설치할 것이다. sudo apt-get install apache2 를 입력하면 다운된다. 다음 경로에 들어가서 확인해 보면 apache2가 다운된 것을 확인할 수 있다. 그리고 sudo service apache2 start를 입력해 보면... 뭔가 돌아가고 돌아온다. 확인해 보려면 ps aux 를 입력하면 현제 실행중인 프로세스 리스트를 전부 출력한다. 이중에서 골라서 출력하려면 ps aux | grep apache2를 입력하면 된다. 멈추려면 sudo service apache2 stop CRON - 정기적 실행 crontab -e 하면 실행하기를 원하는 ..

11. 스프링 / 영속성 전이

소유자가 하나일 때는 casecaseType.ALL로 설정해서 관련된 테이블에 정보를 다 넣어도 상관이 없음. 근데 이제 하나의 테이블만 연관된 것이 아닌 여러개가 하나의 테이블에 접근하고 소유자가 하나가 아닐 때는 사용하면 안됌~ => 중구난방으로 쿼리가 들어감 ㅠㅠ 예시) @OneToMany(mappedBy = "parent", cascade = CascadeType.ALL,orphanRemoval = true) private List childList = new ArrayList(); 기본값 타입 JPA는 두개의 데이터 타입으로 분류가 가능하다 1. 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능 예) 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능..

Spring 2021.07.20

10. 스프링 / 실전예제 4. 상속관계 매핑

이걸 햇다옹! 아 귀찮아 ㅎㅎ 프록시 Member를 조회할 때 Team도 함께 조회해야 하나? 이에 대해 해결하려면 프록시를 제대로 이해해야 한다! 프록시의 특징 실제 클래스를 상속 받아서 만들어짐 실제 클래스와 겉 모양이 같다. 사용하는 입장에선느 진짜 객체인지 프록시 객체인지 구분하지 않고 사용하면 된다(이론상...) 프록시 객체는 실제 객체의 참조(target)를 보관 프록시 객체를 호출하면 프록시 객체는 실제 객체의 메소드 호출 즉시 로딩과 지연 로딩 지연 로딩 LAZY를 사용해서 프록시로 조회 이것은 이론적인것이고 실무에서는 무조건 극소수를 제외하고 무조건 지연로딩으로 바른다! JPQL Fetch 조인이나, 엔티티 그래프 기능을 사용해라! 즉시 로딩은 상상하지 못한 쿼리가 나간다.

Spring 2021.07.20

8. 스프링 / 2021-07-18 (다대다 [N:M])

이 부분은 편히 공부해도 된다! 그냥 보라네! 이렇게 쓰면 안된다고 한다. @ManyToMany 사용을 해서 지정 가능 근데 들어가기 전에 알아야 할 것은 쓰지 말라는거임 ! ㅋㅋ 여기서 테이블에 관한 이야기인데 ORDER 테이블으 Member_ID 랑 Product_ID를 참조해서 복합키로 사용하고 있다. 처음 설계상에서는 이렇게 하면 깔끔하고 장점이 많은데 어플리케이션이 이제 업데이트가 되고 수정이 되는 과정에ㅐ서 받아온 FK가 변동될 수 도 있다. 그렇기에 ORDER 테이블에 그 테이블 만의 PK를 별도로 생성을 해주면 후에 관리를 하는데 유용하다고 해서 Teacher는 이렇게 많이 쓴다고 한다. 그러면 이제 실전 예제 3으로 한번 넘어가보자! 실전 예제 3 - 다양한 연관관계 매핑 근데 그냥 보고..

Spring 2021.07.18

7. 스프링 / 2021-07-18 (연관관계 매핑 )

고려사항 3가지 1. 다중성 (@OneToMany, @ManyToOne, @OneToOne, @ManyToMany) 2. 단방향, 양방향 3. 연관관계의 주인 package jpabook.jpashop.domain; import javax.persistence.*; import java.util.ArrayList; @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; @Column(name = "USERNAME") private String name; @ManyToOne @JoinColumn(name = "TEAM_ID") // 우선 ManyToOne 그러니까 //Member가 여러명이고 ..

Spring 2021.07.18

6. 리눅스 / 2021-07-17 (whereis , $PATH / process )

사실 우리가 쓰는 흔한 명령어인 ls 혹은 rm도 어딘가에 파일 경로안에 위치해 있고 그것을 우리는 불러서 쓰는 것 뿐이다. 그래서 whereis ls를 하면 그 파일의 위치를 출력해준다. man ls를 하면 ls 에 대한 상세한 정보를 알려준다. 근데 뭔가 이상하지 않은가? 보통 파일을 실행하려면 그 저장된 경로에 가서 실행을 하는데 ls 의 경우에는 어디에서든지 실행해도 문제가 없다.! ' 그것은... PATH설정 때문이다. ($PATH) echo $PATH하니까 뭐가 많네! 25강 : process란 무엇인가? SSD, HDD => 우리가 흔히 아는 저장장치 (Storage) / 가격 낮고, 용량 크고, 속도 낮다 RAM => memory / 가격 높고, 용량 작고, 속도 빠르다. cpu => 중앙..

6. 스프링 공부 / 양방향 연관관계와 연관관계의 주인

단방향 매핑에서 양방향 매핑으로 한단계 상승! 전에 내용에서 본 단방향 관계와 양방향 관계는 테이블 구조로 보면 전혀 다른게 없다. 왜? 테이블을 생각해보면 외래키로 조인이 가능하기 때문임 서로 조인으로 왓다갓다 하면 끝이기 때문이다 그런데 class의 경우에는 그게 안됨!~ 그래서 각자 안에 Member.class에는 Team을 넣어주고, Team.class안에는 Member를 넣어준다. 근데 Team에는 구성원이 여러명이라면 List로 넣어준거다. //=======================Team.class에 팀 하나당 여러명의 멤버가 있으니 //=======================OneToMany를 members에 붙여줌. package jpabook.jpashop.domain; impor..

Spring 2021.07.15