본문 바로가기

분류 전체보기104

ORM / 양방향 매핑 원리 테이블 조인을 할 때 전략을 바꿀 수 있습니다. 컬렉션 값에 대해서 default 값은 lazy loding으로 처음 select가 일어날 때 컬렉션은 select 하지 않고 컬렉션이 필요할 때 다시 select를 해서 컬렉션의 데이터를 불러오는 방식입니다. 이때는 select가 두번 일어나기 때문에 IO도 두번 일어나게 됩니다. 이렇게 @OneToMany annotation 안에 fetch값을 EAGER로 해주면 서버 실행 시 컬렉션을 join 합니다. Post 테이블에서 User는 컬렉션 타입이 아니기때문에 EAGER가 default 값입니다. user 테이블의 @OneToMany annotation의 fetch 값을 EAGER로 설정하고 아래 메서드를 실행해보면 콘솔창을 확인해보면 Hibernate.. 2021. 7. 17.
양방향 매핑 - @OneToMany, @JasonIgnoreProperties 더보기 2021.07.04 - [Spring] - DB 데이터 활용하기 - jpa 테이블 join 참고해주세요! 데이터 베이스에 데이터가 여러개 있을 때 양방향 조인을 하기 위해서 user 테이블에 있는 컬렉션에도 @OneToMany annotation을 붙여줍니다. 여기서 @OneToMany annotation에 mappedBy 는 foreign 키의 주인이 아니라는 뜻 입니다. 이런 상황에서 브라우저에서 전체 데이터에 대해서 접근을 한다면 이렇게 조인을 잘 해서 출력해줌 하지만 아이디를 통해서 찾으려고 하면 서로 양쪽에서 조인하기 때문에 무한 조인이 됩니다. post에서 user 변수 값을 가져오기 위해 조인된 user 모델에서 데이터를 가져오려고 하면 post 컬랙션 정보를 또 가져오기 위해 pos.. 2021. 7. 17.
git bash - github 연결하기 git hub에 repository를 만들어줍니다. repository 주소를 복사해줍니다. git add, commit을 다 한 상태에서 git remote add 이름 repository 주소 해줍니다. 이때 git hub에 로그인 하라는 창이 뜰 수도 있습니다. 로그인 해줍니다. git push 이름 master 해주면 git hub에 올라갑니다. 확인해보면 잘 올라갔습니다. 2021. 7. 7.
git branch 만들기 git에 업로드 할 파일에서 우클릭 - Git Bash Here 해줍니다 git branch로 현재 branch를 확인해줍니다. git branch branch이름 해주면 새로운 branch가 생성됩니다. git checkout branch이름 으로 해당 branch로 이동해주세요 apple branch로 이동한 상태에서 apple-test라는 .txt 파일을 하나 만들고 add, commit 해주었습니다. git checkout master로 master branch로 이동하면 apple-test 텍스트 파일이 사라진 것을 볼 수 있습니다. apple branch에서 만든 것이기 때문에 master branch에서는 볼 수 없는 것입니다. branch를 합치고 싶다면 git merge apple을 해줍.. 2021. 7. 7.
Git Bash - add, commit, reset git에 올릴 폴더로 들어가 우클릭해줍니다. git init 을 해주면 숨김 폴더로 .git 폴더가 생성된 것을 볼 수 있습니다. .git 폴더가 생성되면 제대로 실행된 것 입니다. git add .를 해줍니다. add 뒤에 파일 명을 쓰지만 . 을 쓰면 해당 폴더 전체를 add 하는 것 입니다. git status를 입력해 현재 상태를 보면 add는 했지만 commit 하기 전 상태임을 알 수 있습니다. git commit -m "메시지"를 입력해줍니다. commit이 제대로 작동하면 commit 한 내역을 볼 수 있습니다. git status 를 입력해보면 working tree clean이라는 문구가 있는데 이게 나오면 현재 파일의 데이터가 모두 commit 된 상태라는 뜻입니다. 폴더에 hello.. 2021. 7. 4.
Git Bash - download Git은 알아서 형상관리, 버전관리를 해주는 도구입니다. https://git-scm.com/downloads Git - Downloads Downloads macOS Windows Linux/Unix Older releases are available and the Git source repository is on GitHub. GUI Clients Git comes with built-in GUI tools (git-gui, gitk), but there are several third-party tools for users looking for a platform-specific exp git-scm.com 먼저 git을 다운로드해줍니다. 운영체제에 맞는걸로 다운로드해줍니다. 다른 설정할 필요 없이.. 2021. 7. 4.
DB 데이터 활용하기 - jpa 테이블 join Post 클래스에서 foreign key로 썼던 userId를 지우고 User 오브젝트 타입의 변수를 선언해 ORM을 해줍니다. getter와 setter를 생성해줍니다. 테이블에는 오브젝트를 담을 수 없습니다. 따라서 User 오브젝트의 id가 foreign key 역할을 할 것이라고 알려주어는 @ManyToOne annotation을 붙여줍니다. 여기서 Many는 post, One은 user 입니다. @ManyToOne annotation은 user의 기본키를 foreign key로 인식해줍니다. 서버를 실행시켜보면 post 테이블에 user_id라는 foreign key가 생성된 것을 확인 할 수 있습니다. 테스트를 위해 더미값을 insert 해줍니다. 현재까지는 데이터베이스에 다른 설정은 안해주고.. 2021. 7. 4.
DB 데이터 활용하기 - 테이블 join Post라는 클래스를 만들어서 데이터베이스에 post 테이블을 만듭니다. @GeneratedValue의 strategy값을 IDENTITY 값으로 하면 mariadb, mysql, oracle에 맞춰서 바꿔줍니다. @Lob annotation을 쓰면 해당 변수에 해당하는 가장 긴 타입으로 설정해줍니다. content는 게시글을 저장할 것이기때문에 그냥 String 타입으로 저장하면 데이터베이스에는 varchar 타입으로 저장되는데 varchar 타입은 225 글자가 최대이기때문에 가장 긴 longtext 타입으로 설정해주어야 한다. 여기서 userId는 user 테이블의 아이디를 나타내줄 변수이다. 테이블을 만들고 데이터를 insert 해줍니다. 한줄씩 현재쿼리 실행을 해줍니다. 이때 user_id는 u.. 2021. 7. 3.
[블로그 만들기] DB 활용하기 - 로그인, 로그아웃 더보기 2021.07.02 - [Spring] - DB 데이터 활용하기 - 회원가입 위 게시물과 이어집니다. loginForm.jsp에 include를 통해서 header.jsp 가 실행되도록 해줍니다. footer.jsp도 마지막줄에 마찬가지로 넣어줍니다. regist.jsp에서 사용했던 div태그와 form 태그를 복사해 가져와 수정해줍니다. action과 method를 통해서 어디로, 어떻게 갈지 지정해줍니다. UserRepository 클래스에 로그인 기능을 하는 메서드도 만들어줍니다. 하지만 이렇게 하게 되면 로그인을 성공했을 때 성공하기 전과 후의 홈화면이 달라지는게 없습니다. 로그인 했을 때 session에 저장해주기 위해 HttpSession을 DI 해줍니다. 함수의 반환타입 앞에 @Res.. 2021. 7. 3.
[블로그 만들기] DB 데이터 활용하기 - 회원가입 UserController 자바 클래스와 loginForm, registForm 이름의 로그인 회원가입 화면을 구성할 jsp 파일을 만듭니다. GetMapping으로 로그인/회원가입 화면에 하는 메서드를 만듭니다. 회원가입 기능을 할 메서드를 만들고 return 값을 로그인 페이지로 해줍니다. 이때 바로 loginForm.jsp로 가지 않고 redirect 해서 주소로 찾아가는 이유는 loginForm() 메서드에서 loginForm.jsp로 가기 전 처리해야 할 로직이 있다면 처리해주어야 하기 때문입니다. 바로 loginForm.jsp로 이동하게 된다면 빈껍데기 페이지로 이동하게 됩니다. 로그인 / 회원가입 페이지를 구성해봅니다. https://www.w3schools.com/ W3Schools Onl.. 2021. 7. 2.
DB 데이터 활용하기 - delete, update 이번에는 Delete를 해봅니다. Delete는 당연히 DeleteMapping을 사용해줍니다. 삭제할 데이터의 id를 주소를 통해서 받으면 @PathVariable 을 이용해서 매개변수로 활용해줍니다. userRepository에 정의되어있는 deleteById로 데이터를 삭제해줍니다. postman에서 send 해보면 잘 삭제된 것을 볼 수 있습니다. 수정은 수정할 데이터를 request해야하므로 PutMapping을 사용해줍니다. PathVariable을 이용해서 주소에서 요청한 id 값을 받아주고 요청받은 데이터들은 User 오브젝트에 넣어줍니다. 보통 userid는 수정하지 않기 때문에 email과 password 값만 받아줄건데, 이렇게 되면 user에는 id와 userid 값은 null이 됩.. 2021. 6. 30.
DB 데이터 활용하기 - 로그인 기능 더보기 2021.06.29 - [Spring] - DB에서 데이터 가져오기 위 게시물과 이어지는 게시물입니다. body에 x-www-form-urlencoded 방식으로 userid와 password를 받았을 때 데이터베이스에 해당 데이터가 있다면 login success 를, 없다면 login fail을 출력하는 기능을 만들어봅니다. userid와 password 값을 body 데이터에 request 해야하기 때문에 PostMapping을 사용해줍니다. login 메서드는 userRepository에 정의되어 있지 않기때문에 만들어줍니다. @Query annotation을 사용해서 데이터들을 SELECT 해줍니다. user 테이블에 userid가 매개변수로 전달받은 userid와 같고 password가.. 2021. 6. 30.
728x90
반응형