최대한 심플하게 적도록 하겠습니다. (절대 귀찮아서가 아니다.)M - ModelV - ViewC - Controller정보를 가지고 있는 부분데이터 저장소UI의 표시정보를 가짐수정이 발생했을때 수정 통지를 해야함재사용가능컨트롤러, 뷰에 대해 참조 불가사용자가 시작적으로
Controller -> Service -> Repository -> DataBase Domain <-> Controller Domain <-> Service Domain <-> Repository - Controller : 웹 계층 - Serivce : 서비스 계층
영속성 컨텍스트 정의엔티티를 영구적으로 저장하는 환경EntityManager를 이용해 영속성 컨텍스트에 접근 가능영속성 컨텍스트 특징EntityManager생성시 1개 생성됨EntityManager이용하여 접근, 관리가 가능함최신 Spring Boot 에서는 생략이 가
새로 생성되상태이며, 아무곳에도 영속되지않는 상태엔티티메니저를 통해 member를 영속성 컨텍스트 관리더 이상 영속 상태의 엔티티를 관리하지 않는다는 뜻이다.실제로 DB에 삭제된 상태
메모리로 서버를 사용하는 방식인데요.yml에서 url 부분을 jdbc:h2:mem:test로 변경하여 돌리니 이제 테스트 코드에서는 h2서버를 일일히 안켜도 돌아가게 되었습니다!!참고로 기본값이 jdbc:h2:mem:test이기에 아무 것도 쓰지 않아도 되긴 하더군요.
Dependency : 의존Injection : 주입DI는 의존성 주입이란 외부에서 객체를 생성하여 직접 넣어주는 걸 말합니다. Spring을 하다보면 값을 넣지도 않고 객체를 볼 수 있는데요.Spring에서 알아서 생성해서 넣어주기에 따로 직접 생성하지 않고 사용 할
AOP(Aspect Oriented Programming)Aspect : 관점Oriented : 지향Programming : 프로그램밍다른말로 관점 지향 프로그램밍이라고 하는 AOP는 OOP(객체 지향 프로그래밍)만으로는 전부 분리하지 못한 것을 해결하기 위해서 사용됩
D: Data A: AccessO: Object의 약자로 데이터베이스에 접근하는 객체를 말합니다.D: Data T: TransferO: Object의 약자로 데이터, Getter, Setter으로만 이루어진 객체를 말합니다.예시 (Java)(롬복을 사용하면 아래 코드
안녕하세요. 이번에 간단한 메모장을 구현하면서 Java, Groovy, Kotlin별로 각각 동작은 같지만 언어만 다르게 구현해보았습니다.사용한 기술은SpringSpring BootJPAH2ValidationThymeleafLombok (Java 한정)입니다.Groov
아래와 같이 세팅을 하고 GENERATE를 눌러서 다운을 받은 뒤 압축파일을 풀어주세요.그리고 압축파일을 IDE에 풀어주세요.코드 링크
간단하게 고유 아이디, 제목, 내용을 저장하는 엔티티를 생성하였습니다.Kotlin 버전 코드Java 버전 코드Groovy 버전 코드
이 클래스는 간단하게 메모 엔티티를 저장하는 곳 입니다.다음으로는 저장, 삭제, 업데이트, 1개 찾기, 모두 찾기, 검색 찾기 로직으로 각각 메소드를 만들었습니다.
@Autowired로 의존성 주입을 해주고...속도 상승을 위해서 Transactional을 readOnly로 만들고 편집이 필요한 로직은 @Transactional로 오버로딩 시켰습니다.또한 만약에 검색이 null로 반환 되면 모든 결과를 반환하게 하였습니다.Kotl
다음으로 컨트롤러를 구현하였습니다./memos : 메모 리스트 보여주는 곳/memo : 새로운 메모 생성하는 곳/memo/{id} : 특정 메모 상세 보기/memo/{id}/edit : 메모 편집 하는 곳/memo/{id}/remove : 메모 삭제하는 곳Kotlin
아래와 같이 세팅을 하고 GENERATE를 눌러서 다운을 받은 뒤 압축파일을 풀어주세요.그리고 압축파일을 IDE에 풀어주세요.코드 링크
앞에서 말했듯이 그루비는 롬복이 먹히지 않기에 get,set을 직접 써주어야 합니다. (정말... 코드가 불편하네요...ㅋㅋ)MemoMemoDTOGroovy 버전 코드Java 버전 코드Kotlin 버전 코드
우선 Autowired으로 의존성 주입을 해주고 저장, 삭제, 업데이트, 1개 찾기, 모두 찾기, 검색으로 메소드를 만들었습니다.Groovy는 일부 괄호 생략이 허용되기에 그루비 정체성(?)를 강조하기 위해서 차별화해서 코드를 만들어봤습니다.Groovy 버전 코드Jav
우선은 MemoRepository를 의존성 주입 해주고, 속도 향상을 위해서 @Transactional(readOnly = true)로 설정하고 실제로 데이터 편집을 하는 메소드에는 @Transactional를 오버로딩 하였습니다.검색은 공백이면 모든 결과가 다 나오게
다음으로 컨트롤러를 구현하였습니다./memos : 메모 리스트 보여주는 곳/memo : 새로운 메모 생성하는 곳/memo/{id} : 특정 메모 상세 보기/memo/{id}/edit : 메모 편집 하는 곳/memo/{id}/remove : 메모 삭제하는 곳그루비 부분은
해당 링크로 접속하신 뒤에 아래와 같이 세팅을 하고 GENERATE를 눌러서 다운을 받은 뒤 압축파일을 풀어주세요.그리고 압축파일을 IDE에서 열어주세요Java 버전 코드Groovy 버전 코드Kotlin 버전 코드
자바에서는 깔끔하게 롬복을 이용해주었습니다. DTO또한 클래스로 만들어도 상관 없지만 저는 record를 이용했습니다. 자바 버전을 낮은 걸로 하시면 record가 작동하지 않을 수 있으니 없다면 class로 하셔도 무방합니다.MemoMemoDTOJava 버전 코드Gr
다음으로 Memo클래스를 저장소인 Repository를 생성해주었습니다.Java 버전 코드Groovy 버전 코드Kotlin 버전 코드
우선 이전에 만들었던 MemoRepository를 의존성 주입해주고, @Transactional(readOnley = true)로 성능을 올려주었습니다. 수정이 필요한 로직인 save, update, remove는 @Transactional를 오버로딩 해주었습니다.Ja
다음으로 컨트롤러를 구현하였습니다./memos : 메모 리스트 보여주는 곳/memo : 새로운 메모 생성하는 곳/memo/{id} : 특정 메모 상세 보기/memo/{id}/edit : 메모 편집 하는 곳/memo/{id}/remove : 메모 삭제하는 곳그루비 부분은
우선은 간단한 메모장을 만들기위해서 필요한 html파일은 5개 입니다. 1\. 메인 페이지 (index.html)메모 리스트 페이지 (memo_list.html)메모 생성 페이지 (new_memo.html)메모 상세정보 페이지 (memo.html)메모 편집 페이지 (e
이제 메모리스트를 보여줄 페이지를 제작할 차례입니다.메인 페이지 (index.html)2\. 메모 리스트 페이지 (memo_list.html)메모 생성 페이지 (new_memo.html)메모 상세정보 페이지 (memo.html)메모 편집 페이지 (edit_memo.ht
다음으로 메모를 생성하는 페이지를 제작 할 차례입니다.메인 페이지 (index.html)메모 리스트 페이지 (memo_list.html)3\. 메모 생성 페이지 (new_memo.html)메모 상세정보 페이지 (memo.html)메모 편집 페이지 (edit_memo.h
이제 메모 내용과 제목등을 보여주는 상세보기 페이지를 적어주었습니다.추가적으로 이 페이지에서는 삭제 버튼도 있어서 삭제도 가능합니다.메인 페이지 (index.html)메모 리스트 페이지 (memo_list.html)메모 생성 페이지 (new_memo.html)4\. 메
마지막으로 메모 값을 변경하는 페이지를 만들어주었습니다.메인 페이지 (index.html)메모 리스트 페이지 (memo_list.html)메모 생성 페이지 (new_memo.html)메모 상세정보 페이지 (memo.html)5\. 메모 편집 페이지 (edit_memo.
재대로 된 첫 홈페이지 제작을 도전해보게 되었습니다. 우선은 간단하게 길드 서비스 시스템을 만들어 볼 에정입니다. 우선은 설계도를 만들어서 만들어볼 생각입니다. 우선은 홈페이지에 로그인 및 회원가입을 구현해볼 생각입니다. 설계 링크
다음으로는 데이터베이스로 사용할 H2 세팅을 하였습니다. 다운로드 링크에서 자신이 사용하는 OS를 다운로드하신 뒤 H2 설정을 해 줍시다. 저는 맥북을 사용하기 때문에 터미널로 h2/bin에 있는 셀를 실행하였습니다. (h2.sh)
기본 세팅으로 되어 있는 application.properties를 지우고 application.yml를 만든뒤 다음과 같은 내용을 넣었습니다.코드 링크
우선 회원가입을 만들 데이터 클래스를 만들생각입니다.클래스 명은 Member로 하고 id, userName, password, date, email를 우선 만들 생각이다...id - 회원의 고유아이디userName - 회원의 고유 아이디password - 회원의 비밀번
우선 Member를 담아둘 공간이 필요하기 때문에 Repository를 만들어주었습니다. Repository이므로 @Repository를 붙여주었습니다.그리고 EntityManager에는 본래 @PersistenceContext나 @Autowired를 붙여주어야 하지만
Board에는 특별히 merge()를 사용해주었는데 간단히 말해서 병합이나 업데이트 정도라고 생각하면됩니다. 기존에 있는 게시판을 수정하여 올릴때의 경우를 생각하여 사용해주었습니다.그리고 조회, 삭제 메소드를 만들어주었습니다.코드 링크
다음은 Repository에서 값을 Service로 받아야하기에 MemberRepository를 주입해주고 아이디와 닉네임은 중복되면 안돼기에 중복 체크를 해주었습니다.
JPA를 사용하게 되면 엔티티 클래스를 만들게 되는데요. 엔티티는 데이터베이스에서 테이블에 대응하는 클래스인데요. 때문에 엔티티에 따라서 만들어지는 테이블의 모양도 달리지게 됩니다.예시 코드 (Java)
Spring버전이 올라가면서 HandlerInterceptorAdapter에 deprecate가 생겼습니다...이제부터는 인터페이스인 HandlerInterceptor를 사용하면 됩니다.
스프링 버전이 올라가면서 WebSecurityConfigurerAdapter 에도 deprecate가 생겼습니다.이제부터는 @Bean으로 등록하고 SecurityFilterChain을 반환하면 됩니다.
jpa에서 enum을 사용하게 되면 다음과 같이 @Enumerated(EnumType.STRING)를 붙여주어야 하는데요. 아무것도 설정하지 않게되면 @Enumerated(EnumType.ORDINAL)로 설정되기 때문입니다.@Enumerated(EnumType.ORD
SpringBoot가 3.0.0 버전으로 만들면서 시큐리티에 형태가 많이 달라져서 열심히 spring 공식 사이트를 찾아가보면서 구현을 하였습니다.이제 config는 Bean으로 등록하면 됩니다.방법은 여러가지가 있으므로 원하는시는 방법으로 구현하시면됩니다.우선 제가
Bean이 등록되고 초기화 되었을때 1번만 실행해주기때문에 등록된 빈을 사용할 수 있습니다.재대로 생성된 모습을 볼 수 있었습니다.
https://github.com/ 로그인 -> Setting -> Dveloper settings -> OAuth Apps -> New OAuth App로 이동하여 새로운 OAuth를 생성해줍니다.현재 사용하고 있는 URL를 작성해주시면 됩니다. 현재는 lo
해당 링크에 접속후 구글 로그인를 합니다.상단에 프로젝트 선택를 눌러줍니다. (만약 다른 프로젝트를 생성한 상태라면 다른 프로젝트 명이 표시되어 있습니다.)눌려주면 새 프로젝트를 만들어주거나 이미 프로젝트가 존재한다면 해당 프로젝트에 들어가서 생성해주어도 상관없습니다.
maven 수정하였을때 프로젝트에 반영하는 방법들 정리https://persestitan.tistory.com/111
Spring프로젝트를 실행해도 서버가 실행되지 않는 문제 해결 방법을 작성했습니다.https://persestitan.tistory.com/111
https://persestitan.tistory.com/148
https://persestitan.tistory.com/149