데이터로 작업하기
private JdbcTemplate jdbc;
@Autowired
public JdbcIngredientRepository(JdbcTemplate jdc) {
this.jdbc = jdbc;
}
@autowired
작성하지 않아도!) 생성자 주입 코드를 별도로 생성하지 않아도, 자동으로 빈 찾아서 생성자 주입을 시켜주는 것!@Autowired
붙어있는 생성자가 있음 -> 생성자 파라미터는 자동으로 autowired됨@Autowired
를 붙이지 않아도 생성자 param의 선언이 final로 되어있으면, 자동으로 자동주입 해준다고 함 ㅎㄷㄷthis.orderInserter = new SimpleJdbcInsert(jdbc)
.withTableName("Taco_Order")
.usingGeneratedKeyColumns("id");
execute()
, executeAndReturnKey()
SessionStatus
: 객체가 DB에 저장된 이후에는 더이상 세션에 보존할 필요가 없으므로 저장된 이후에 sessionStatus.setComplete()
를 통해 세션을 재설정한다public class IngredientByIdConverter implements Converter<String, Ingredient>
public Ingredient convert(String id)
시그니처를 가지게 선언하면 된당 :)@Entity
어노테이션을 붙여줘야함@Id
어노테이션을 붙여줄 것@GeneratedValue
속성을 붙여주면 상기에서 얘기했던 useGeneratedKeys와 동일한 역할을 하도록 해당 컬럼을 설정할 수도 있다@NoArgsContructor
도 가져야함. 해당 예시에서는 @NoArgsContructor(Access=accessLevel.PRIVATE, force=true)
로 되어있는데, access를 통해서는 클래스 외부에서 noargscontructor를 사용할 수 없도록 구성했고, force 속성을 통해서 모델 내에 final로 선언되어 있는 속성들에 대해 default로 null을 채우도록 했다@Data
어노테이션은 원래 인자가 있는 생성자를 자동으로 추가하는데, @NoArgsContructor
를 적용하면 해당 생성자가 제거돼버린다. 따라서 @RequredArgsContructor
를 추가하여 다시 인자가 있는 생성자를 사용할 수 있도록 하는 것이 좋다@PrePersist
: 객체 저장 전에 수행하는 method에 붙인다. 예를들어 createYmdt를 현재 시간으로 지정한다거나.@Table
을 붙여주는 경우가 있는데, 요거는 해당 모델이 실제 RDB의 테이블 명과 다르거나, 해당 모델명이 그대로 테이블명에 사용되면 예약어 등의 이유로 이슈가 있을 때 붙여주면 된다.CrudRepository
를 확장하여 구현한다.public interface YujinRepository extends CrudRepository<Yujin, String>
readOrdersByDeliveryZipAndPlacedAtBetween()
-> 요 이름은 DeliveryZip
랑 PlacedAt
값을 가지고 List<Order>
를 읽어오게 됨@Query
어노테이션을 달아, 수행하려는 쿼리를 명시해주면 된다