목록전체 글 (40)
helloworld
별로 어려운건 없는것 같다.. repository를 위한 인터페이스를 만들어 준 후에 JpaRepository를 상속받는다 그 후 repository 클래스 위에 @Repository를 만들어 준다 @Repository public interface 리파지토리 extends JpaRepository { } 띠용 아 참 JpaRepository에 들어가는 매개변수는 도메인클래스, 도메인의 기본키를 넣었다(generatedValue) select문을 사용할 때는 컨트롤러에서 리파지토리를 의존성 주입을 해준 후에 리파지토리 . 하면 사용할 수 있는 메서드이 나온다 . 뭐가 있는지 궁금하다면 JpaRepository에 마우스를 대고 컨트롤+좌클릭 혹은 컨트롤+b를 누르면 메서드들을 확인 할 수 있다. 암튼 나는..
나중에 oracle이나 mysql이랑 비슷할거같기도하당. org.springframework.boot spring-boot-starter-data-jpa com.h2database h2 2.1.214 runtime 우선 관련 기능을 dependency에 추가한다 그 후 yml 파일에서 datasource: url: jdbc:데이터베이스url;NON_KEYWORDS=USER username: sa h2: console: enabled: true jpa: show-sql: true defer-datasource-initialization: true 넣어준다. show sql은 실행시키는 database 쿼리문을 보기 위한 설정이다. defer-datasource-initializaion은 h2 databas..
이름부터 어렵다.. 일단 HATEOAS는 하나의 리소스에서 그 리소스와 관련된 링크를 추가하는 것이다. 예를 들면 한명의 유저의 정보를 가져오는 기능이 있다고 생각해보자. 유저의 정보를 보내면서 전체유저의 정보를 확인하는 소스의 링크까지 같이 보내는 것이다. 그럼 사용자 입장에서 굉장히 편리할 것이다. 다시 전체유저의 목록을 보러가는 귀찮음을 서버에서 한번에 보내주니 2번클릭할거 1번 클릭할것이다 .. 라고 나는 이해했다. 우선 pom.xml에 org.springframework.boot spring-boot-starter-hateoas hateoas 디펜던시를 추가한다. hateoas를 사용하고자 하는 기능에서 EntityModel과 WebMvcBuilder를 생성한다 EntityModel model ..
이번엔 내 코드에 대해 버전 관리를 해보자 .. 생각보다 어렵지는 않더군 .. 우선 기존 도메인클래스인 User클래스를 복사해서 버전2라는 의미의 UserV2라는 도메인을 생성했다. 그 후 기존 도메인을 상속 받은 뒤 String grade를 추가해주었다. *디폴트생성자가 없으면 에러가 날지도... 컨트롤러에서 @GetMapping("/users/{id}") public MappingJacksonValue retrieveUserV1(@PathVariable int id) { User user = service.findOne(id); if (user == null) { throw new UserNotFoundException(String.format("ID[%s] not found", id)); } Sim..
전 글에서는 JsonIgnore로 데이터를 안보이게끔 하였다. 이번엔 좀 더 프로그래밍적으로 멋잇게(?) 해본다.. 우선 JsonIgnore 어노테이션을 전부 주석처리하고 @JsonFilter를 추가한다 @Data @AllArgsConstructor //@JsonIgnoreProperties(value={"password"}) @JsonFilter("UserInfo") public class User { private Integer id; @Size(min = 2, message = "Name은 2글자 이상 입력해주세요") private String name; @Past private Date joinDate; // @JsonIgnore private String password; // @JsonIgno..
데이터를 사용하다보면 노출 시키고 싶지 않은 데이터들도 있을 것이다. 예컨데 비밀번호나 주민등록번호같은.. 이번엔 데이터 필터링을 해본다. 전글에서 xml로 데이터를 변환시키기 위해 디펜던시를 하나 넣었다. jackson 어쩌고저쩌고 .. 도메인클래스에서 public class User { private Integer id; @Size(min = 2, message = "Name은 2글자 이상 입력해주세요") private String name; @Past private Date joinDate; private String password; private String ssn;//주민등록번호 } 비밀번호와 주민번호를 추가해주었다. 예제코드에 있던 list에도 비밀번호와 주민번호를 추가해둔 상태다. 이 상태..
기존 users 를 불러오는 endpoint로 users내용을 json으로 불러와보면 [ { "id": 1, "name": "Song", "joinDate": "2023-08-13T10:54:21.203+00:00" }, { "id": 2, "name": "Woo", "joinDate": "2023-08-13T10:54:21.203+00:00" }, { "id": 3, "name": "ChimChakMan", "joinDate": "2023-08-13T10:54:21.203+00:00" } ] 잘 불러와진다 하지만 headers 에서 Accept / application/xml로 불러오면 406에러가 난다 전에 4XX 상태코드는 클라이언트 쪽 에러라고 하였다. xml 형식의 데이터를 만들 준비가 서버쪽에..
우선 스프링부트가 업데이트 되면서 web-starter 에 validation에 관한 기능이 빠졌다고 한다. 나는 2.7~ 버전을 사용하기 때문에 org.springframework.boot spring-boot-starter-validation 디펜던시를 추가해주었다. @Data @AllArgsConstructor public class User { private Integer id; private String name; private Date joinDate; } 기존에 사용하던 user에 대한 dto라고 해야하나 vo라고 해야하나 (dto랑 vo는 맨날 헷갈린다 ㅠ) 암튼 이 파일에 @Data @AllArgsConstructor public class User { private Integer id;..
httpmethod의 기능중 마지막 기능일것 같다 put은 데이터베이스내에서의 update기능과 같다. 강의 챕터가 끝나면서 과제로 putMapping을 하라고 하셨다. 우선 private static List users = new ArrayList(); static { users.add(new User(1, "Song", new Date())); users.add(new User(2, "Woo", new Date())); users.add(new User(3, "ChimChakMan", new Date())); } list로 간단하게 코드예제를 만들면서 하고 있었기 때문에 이런 코드가 있다. 우선 유저목록의 id값을 가변변수로 받고 id값을 user 객체에 set 한 뒤 수정을 하려 했었다. @PutM..
public User deleteById(int id) { //열거형데이터 배열 등을 순차적으로 접근하여 사용하기 위한 Iterator iterator = users.iterator(); while (iterator.hasNext()) { User user = iterator.next(); if (user.getId() == id) { iterator.remove(); return user; } } return null; } 예제 코드를 만들때 간단히 하기 위해 List에 User를 담아 데이터를 만들어 놨었다. delete 기능은 id값을 순회하여 들어온 id값과 같은id값이 있으면 그 아이디를 삭제하는 기능이다. 컨트롤러에서 deleteById를 호출하여 아이디를 삭제해보자. @DeleteMappin..