분류 전체보기 954

30. 스프링DataJPA 주요 기능

스프링DataJPA는 JPA를 편리하게 사용할 수 있도록 도와주는 라이브러리 대표적인 기능은 공통 인터페이스 (CRUD) 쿼리 메서드 기능 : 메서드의 이름을 통해 쿼리를 만들어 준다. 공통 인터페이스 이렇게 공통적인 CRUD와 보통 DB들이 공통적으로 가지고 있는 기술들. 스프링DataJPA의 인터페이스 이거 외에도 공통 기능들 대부분 포함. 뭐 DB의 전체 카운트 등등.. 사용법은 public interface ItemRepository extends JpaRepository{ } 하면서 인터페이스로 상속받으면 된다. 마지막 타입을 이렇게 해 놓으면 스프링DataJPA가 프록시로 구현체를 만들어 스프링 빈에 등록해 준다. 쿼리 메서드 기능. 메서드 이름을 findByUsernameAndAgeGreat..

29. 스프링 데이터 JPA 전체적인 기능

SpringDataJPA는 구현체가 아니라 인터페이스를 만든다. 그러면 또 프록시가 구현체를 만들어 준다. SpringDataJPA는 이름으로 쿼리를 자동으로 생성해준다. 예를 들어 findByEmailAndName() 이렇게 하면 select m from Member m where m.email=? and m.name=? 이렇게 email과 name findBy 는 select 이렇게 JPQL을 생성해 줌. 인터페이스에 쿼리작성도 가능하다. 메소드에 @Query("select u from User u where u.emailAddress=?" User findByEmailAddress(String emailAddress); 또, @Query(value="sql문", nativeQurey=true) 하면..

form 이벤트, v-model

이렇게 가능. 이렇게 하면 input의 값이 바뀔때 마다 실행됨. 근데 methods:{ handler(e){ console.log(e.target.value); } } 이렇게 value 가져올려면 e.target.value로 해야 함. 여러 input의 이벤트에 반응하기 위해 공통적인 것만 대략적으로 가져온 듯. e.value는 따로 안만들어 놨음. 이런 식으로도 가능 $event는 약속임. $e 이런 거 안됨. 이렇게 하면, 저 target의 value가 msg라는 변수와 연결됨. data(){ return{ msg : 'Hello Vue Input' } } 이것과 연결됨. data(){ return{ isChecked:false } } data(){ return{ isChecked:false } }..

Vue.js 2023.10.11

파일 fs

const fs = require('fs'); const path = require('path'); const FILE_PATH = path.join(__dirname, "addFolder", "addFolder.txt"); // 이건 패턴임. 파일 fs관련 할 때는 이 패턴 인 듯 // fs.메소드(경로, 옵션, 콜백(에러, 데이터)) 콜백은 파일로드 또는 에러 시 할 행동 fs.open(FILE_PATH, 'r', (err, fd)=>{ if(err){ return console.log(err); } console.log("파일을 정상적으로 읽을 수 있습니다."); fs.readFile(FILE_PATH, 'utf-8', (err, data)=>{ if(err) return console.log(er..

28. 스프링 데이터 JPA

원래 스프링 + JPA 조합으로 오랫동안 사용 해 왔음. 근데 어느 순간 굉장히 많은 종류의 DB가 만들어 졌음. 근데 결국, DB는 다 똑같음. 어딘가에 데이터를 저장하거나, 불러오거나 등등. 그냥 CRUD 이렇게 비슷한데, 개발자가 일일히 Mapper역할을 하며 DB마다 CRUD를 구현 해야 했다. 근데, 이럴 바에 굉장히 넓은 boundary의 추상화를 하여 인터페이스를 만들고 그걸 한번 제공해보자. 그래서, SpringData라는 공통 기술이 있고(뭐 CRUD 이런 DB마다 교집합인 공통기술일거임.) 각각의 DB마다 특징이 있는데, 그것을 SpringDataJPA, SpringDataMongo 등 그 DB의 특징에 맞춰 추가로 제공. 스프링데이터는 - CRUD + 쿼리에 대한 것도 제공 - 다른 ..

27. JPA 예외

앞서 JPA는 EntityManager를 통해 사용한다고 했다. EntityManager는 순수 JPA기술이다. 스프링과는 관계가 없다. 따라서, 예외도 JPA관련 예외를 발생시킨다. (아닌 것도 있긴 하다.) PersistenceException 및 하위 그럼 또 예외를 JPA라는 특정 기술에 의존하게 될 수도 있다. 그렇다면 어떻게 스프링 예외(DataAccessException)으로 변화할까? 바로 @Repository이다. 우리가 Spring MVC에서 @Controller, @Service, @Repository 이렇게 있는데, 일단 기본적으로 컴포넌트 스캔의 대상이 되고, (컴포넌트 스캔의 범위 내라면. 스캔범위를 설정 안해놓으면 main이었나 java였었나.. 여튼 되게 상위부터 스캔했음) ..

26. JPA 적용

아무래도 가장 중요한 부분은 객체와 테이블을 매핑하는 거다. JPA가 제공하는 다양한 애노테이션을 사용하여 매핑하면 된다. @Data @Entity //@Table(name="item") public class Item { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name="item_name", length = 10) private String itemName; private Integer price; private Integer quantity; public Item() { } public Item(String itemName, Integer price, Integer quantity) { this...

이벤트 리스너 passive

스크롤 이벤트 리스너를 추가할 때 document.addEventListener("scroll", (e)=>{ }, {옵션들}) 이렇게 이벤트용 옵션을 객체로 넣을 수 있다. 그 중 하나가 passive {passive:true} 이렇게 할 수 있다. 이거 왜에도 capture, once 등 뭐랄까 버블링? 이벤트 전파에 대한 것도 옵션을 줄 수 있는 모양이다. passive는 스크롤 이벤트가 발생하면 보통 스크롤을 취소할 지 여부를 알 수 없기 때문에 항상 수신기가 끝날 때 까지 기다렸다가 스크롤을 한다. passive 옵션은 브라우저에게 스크롤을 기다리지 않고 즉시 스크롤 해도 됨을 알리는 거다.