μν λ±λ‘ ν, insert into item μΏΌλ¦¬λ¬Έμ΄ μ€νλ¨ μ¬κΈ°μ item_idλ 1! μ΄ μν μμ΄λλ‘ μμ νμ΄μ§μ μ§μ
μν μ‘°ν μνμ μμ νλ €λ©΄ ν΄λΉ μνμ λΆλ¬μμΌ ν¨ λ°λΌμ, ItemServiceμ μν μ‘°ν λ©μλ μΆκ° (μ‘°ν κΈ°λ₯μ΄λΌ μ½κΈ° μ μ©) item μν°ν°μ image μ 보 μν°ν°λ₯Ό itemFormDto κ°μ²΄λ‘ λ³ν ν λ°ννλ μ‘°ν κΈ°λ₯ @Transactional(readOnly = true) public ItemFormDto getItemDtl(Long itemId) { List itemImageList = itemImageRepository.findByItemIdOrderByIdAsc(itemId); List itemImageDtos = new ArrayList(); for..
Auditing μν°ν°μ κ³΅ν΅ λ©€λ² λ³μλ€μ μΆμ ν΄λμ€λ‘ λ§λ€κ³ , ν΄λΉ μΆμ ν΄λμ€λ₯Ό μμλ°μ μν°ν°μ 곡ν΅μ μΈ κΈ°λ₯μ μννλλ‘ νλ©° μν°ν°μ μμ±κ³Ό μμ μ κ°μνλ κΈ°λ² AuditorAware μΈν°νμ΄μ€ νμ¬ λ‘κ·ΈμΈν μ¬μ©μμ μ 보λ₯Ό λ±λ‘μμ μμ μλ‘ μ§μ νκΈ° μν΄μ AuditorAware μΈν°νμ΄μ€λ₯Ό ꡬνν ν΄λμ€ μμ± public class AuditorAwareImpl implements AuditorAware { @Override public Optional getCurrentAuditor() { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); String userId = ""; if..
μ¦μ λ‘λ© β μν°ν°λ₯Ό μ‘°νν λ μ°κ΄λ μν°ν°λ₯Ό ν¨κ» μ‘°ν μ¦μ λ‘λ© ν
μ€νΈ @SpringBootTest @TestPropertySource(locations = "classpath:application-test.properties") @Transactional class OrderTest { /* μ½λ μλ΅ */ @Autowired OrderItemRepository orderItemRepository; @Test void μ¦μ_λ‘λ©_ν
μ€νΈ() { Order order = this.createOrder(); Long orderItemId = order.getOrderItems().get(0).getId(); entityManager.flush(); entityManager.clear(); OrderI..
μμμ± μ΄λ? (JPA Persistence) JPA μμμ μμμ±μ Entityλ₯Ό μꡬμ μΌλ‘ μ μ₯ν΄μ£Όλ νκ²½μ μλ―Έ μμμ± μ μ΄(cascade) λ? μ¬μ μ μ μ : 'μμ νν¬', 'νν¬μ²λΌ νλ₯Έλ€' λΌλ λ» μν
ν° μνλ₯Ό λ³κ²½ν λ, ν΄λΉ μν°ν°μ μ°κ΄λ μν°ν°μ μν λ³νλ₯Ό μ νμν€λ μ΅μ
μ΄λ, λΆλͺ¨λ Oneμ ν΄λΉνκ³ μμμ Manyμ ν΄λΉ EX ) Order μν°ν°κ° μμ λμμ λ ν΄λΉ μν°ν°μ μ°κ΄λμ΄ μλ OrderItem μν°ν°κ° ν¨κ» μμ λκ±°λ, Order μν°ν°λ₯Ό μ μ₯ ν λ Order μν°ν°μ λ΄κ²¨μλ OrderItem μν°ν°λ₯Ό νκΊΌλ²μ μ μ₯ κ°λ₯ πββοΈ μνκ° μ νλλ λͺ¨μ΅μ νν¬κ° νλ₯΄λ λͺ¨μ΅μΌλ‘ μμ CASCADE μ’
λ₯ μ€λͺ
PERSIST λΆλͺ¨ μν°ν°κ° μμνλ λ, μμ..
μ°κ΄ κ΄κ³ 맀ν μ’
λ₯ μΌλμΌ(1:1) β @OneToOne μΌλλ€(1:N) β @OneToMany λ€λμΌ(N:1) β @ManyToOne λ€λλ€(N:N) β @ManyToMany μ°κ΄ κ΄κ³ 맀ν λ°©ν₯ DB μ€μ¬ μ€κ³ ν
μ΄λΈμμ κ΄κ³λ νμ μλ°©ν₯ JPA κ°μ²΄ μ§ν₯ μ€μ¬ μ€κ³μμλ λ¨λ°©ν₯, μλ°©ν₯ μ‘΄μ¬ μΌλμΌ λ¨λ°©ν₯ 맀ννκΈ° Cart β Member μ₯λ°κ΅¬λ-νμ 맀ν ν
μ€νΈ @Autowired CartRepository cartRepository; @Autowired MemberRepository memberRepository; @Autowired MemberController memberController; @PersistenceContext EntityManager entityManager; priv..
ADMIN κ³μ λ§ μ κ·Όν μ μλλ‘ μ€μ π μν λ±λ‘, μμ , μμ νμ΄μ§ λ±λ± CustomAuththenticationEntryPoint public class CustomAuthenticationEntryPoint implements AuthenticationEntryPoint { @Override public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException { response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized"..
μν μν°ν° @Entity @Getter@Setter public class Item { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "item_id") private Long id; private String itemName; private int price; private String itemDetail; private String type; @Enumerated(EnumType.STRING) private ItemSellStatus itemSellStatus; }ItemSellStatus νμ /ν맀 μνλ₯Ό λνλ΄λ Enum Class μν μ΄λ―Έμ§ application.properties μ€μ # νμΌ ν κ°λΉ μ΅λ μ¬μ΄μ¦ s..
νμ κ°μ
νλ©΄μΌλ‘ λΆν° λμ΄μ€λ κ°μ
μ 보λ₯Ό λ΄μ DTO κ°μ²΄ @Setter @NoArgsConstructor public class MemberFormDto { @NotBlank(message = "μ΄λ¦μ νμ μ
λ ₯ κ°μ
λλ€.") private String name; @NotEmpty(message = "μμ΄λλ νμ μ
λ ₯ κ°μ
λλ€.") private String memberId; @NotEmpty(message = "λΉλ°λ²νΈλ νμ μ
λ ₯ κ°μ
λλ€.") @Length(min = 8, max = 16, message = "λΉλ°λ²νΈλ 8μ μ΄μ, 16μ μ΄νλ‘ μ
λ ₯ν΄μ£ΌμΈμ.") private String password; @NotEmpty(message = "μ£Όμλ νμ μ
λ ₯ κ°μ
λλ€.") private ..
'μ€νλ§/μΌνλͺ° νλ‘μ νΈ' μΉ΄ν
κ³ λ¦¬μ κΈ λͺ©λ‘
λ¨μΆν€
λ΄ λΈλ‘κ·Έ
λ΄ λΈλ‘κ·Έ - κ΄λ¦¬μ ν μ ν |
Q
Q
|
μ κΈ μ°κΈ° |
W
W
|
λΈλ‘κ·Έ κ²μκΈ
κΈ μμ (κΆν μλ κ²½μ°) |
E
E
|
λκΈ μμμΌλ‘ μ΄λ |
C
C
|
λͺ¨λ μμ
μ΄ νμ΄μ§μ URL λ³΅μ¬ |
S
S
|
맨 μλ‘ μ΄λ |
T
T
|
ν°μ€ν 리 ν μ΄λ |
H
H
|
λ¨μΆν€ μλ΄ |
Shift + /
β§ + /
|
* λ¨μΆν€λ νκΈ/μλ¬Έ λμλ¬Έμλ‘ μ΄μ© κ°λ₯νλ©°, ν°μ€ν 리 κΈ°λ³Έ λλ©μΈμμλ§ λμν©λλ€.