executeQuery

  • SELECT 문과 같은 쿼리문을 실행할 때 사용한다.
  • 쿼리를 실행하고, 결과를 ResultSet 객체로 반환한다. 반환된 ResultSet 객체를 통해 결과를 가져올 수 있다.
  • SELECT는 하나 이상의 레코드를 조회하게 되는데 이 때 결과 집합을 반환한다. ResultSet은 결과 세트에 대한 커서를 포함하므로 사용자가 쿼리 결과를 반복적으로 가져올 수 있다.
  • 커서는 데이터베이스에서 조회된 결과 집합에서 현재 위치를 나태내는 포인터로 이를 이용해 하나의 행을 읽어오고, 디음 행으로 이동하여 원하는 레코드를 순차적으로 탐색할 수 있다.

executeUpdate()

  • executeUpdate()는 INSERT, UPDATE, DELETE와 같은 DML(Data Manipulation Language)에서 실행 결과로 영향을 받은 레코드 수를 반환한다.
  • executeUpdate()는 반환 타입이 int이므로, 쿼리 실행 결과로 반환되는 값을 int로 받아와야 한다.
  • executeUpdate()는 행의 개수를 반환하기 때문에  rs를 사용할 필요 없다.

'DB' 카테고리의 다른 글

DB-트리거  (0) 2024.10.28
저장 프로시저  (0) 2024.10.28
인덱스(INDEX)  (0) 2024.10.25
Sequence(오라클)  (0) 2024.10.25
TRANSACTION/제약조건/테이블생성시 제약조건  (0) 2024.10.25

<부모 클래스>

public class Animal {

 

void sing() {

System.out.println("부모..... 동물은 소리를 낸다.");

 

}

 

void fly() {

System.out.println("부모........동물은 날수있다.");

 

}

}

 

< 자식클래스-(Cat) >

public class Cat extends Animal{

 

public Cat(){

 

super();

System.out.println("2.Cat 생성됨");

}

 

void play() {

System.out.println("고양이 혼자놀기");

}

 

@Override

public void sing() {

System.out.println("cat.....야옹 야옹~~~~~");

}

 

@Override

public void fly() {

System.out.println("cat.....고양이는 날수없다.");

}

 

}

 

<자식클래스(Dog) >

//자식은 부모의 정보를 알수있다.

public class Dog extends Animal{

 

public Dog(){

 

super();

System.out.println("2.Cat 생성됨");

}

@Override

public void sing() {

System.out.println("Dog.....멍멍멍멍~~~~~");

}

 

@Override

public void fly() {

System.out.println("Dog.....개는 날수없다.");

}

 

}

 

 

'Java' 카테고리의 다른 글

JDBC-DAO  (0) 2024.10.25
JDBC-DTO  (0) 2024.10.25
JDBC-View  (0) 2024.10.25
JDBC-Service  (0) 2024.10.25
자바 CRUD 메모리 저장 방식  (0) 2024.09.26

JAVA CRUD 기본 형식

private static void menu() {

 

System.out.println("-----------------------------------");

System.out.println("1.예금 | 2.출금 | 3.잔고| 4.종료");

System.out.println("-----------------------------------");

}

 

 

 

 

 

 

private static void call12() {

Scanner sc = new Scanner(System.in);

//flag 값 주어짐 while 탈출할때 용이함

boolean isStop = false;

int total = 0;

while (!isStop) {

 

menu();

 

System.out.print("선택>>");

int bank = sc.nextInt();

 

 

switch (bank) {

case 1 -> {

System.out.print("예금>>");

int new_money = sc.nextInt();// 예금

 

total = new_money + total;

 

}

case 2 -> {

System.out.print("출금>>");

int mi_money = sc.nextInt();// 출금

System.out.print("출금액"+mi_money);

total = total - mi_money;

 

}

case 3 ->

 

{

System.out.println("잔고>>"+total);

}

 

case 4 ->

 

{

isStop = true;

 

}

 

 

 

default -> {

 

System.out.println("지원x");

}

 

}

 

}

 

sc.close();

System.out.println("종료");

 

}

'Java' 카테고리의 다른 글

JDBC-DAO  (0) 2024.10.25
JDBC-DTO  (0) 2024.10.25
JDBC-View  (0) 2024.10.25
JDBC-Service  (0) 2024.10.25
자바 상속  (0) 2024.10.04

Spring Data JPA의 장점

  1. 자동화된 CRUD 메서드 제공: Spring Data JPA는 기본적인 CRUD(Create, Read, Update, Delete) 작업을 자동으로 제공하는 인터페이스(JpaRepository, CrudRepository)를 통해 간단하게 데이터베이스 작업을 수행할 수 있습니다.
  2. 메서드 이름을 통한 쿼리 생성: 복잡한 쿼리를 메서드 이름만으로 생성할 수 있습니다. 예를 들어, findByUsername과 같은 메서드 이름을 사용하여 특정 필드로 데이터를 조회할 수 있습니다.
  3. 트랜잭션 관리: Spring Data JPA는 트랜잭션 관리를 자동으로 처리하여 데이터베이스 작업의 원자성을 보장합니다.
  4. JPQL 및 네이티브 쿼리 지원: 필요에 따라 JPQL(Java Persistence Query Language) 또는 네이티브 SQL 쿼리를 사용할 수 있습니다.

Mapper를 사용하는 경우

Mapper는 객체 간의 변환을 담당하는 도구입니다. 일반적으로 데이터베이스 엔티티와 비즈니스 로직에서 사용하는 DTO(Data Transfer Object) 간의 변환을 처리할 때 사용됩니다. Spring Data JPA를 사용하면 직접적인 매핑 작업이 줄어들지만, 여전히 특정 상황에서는 Mapper가 유용할 수 있습니다.

Mapper를 사용하는 상황

  1. DTO 사용: 데이터베이스 엔티티와 클라이언트 사이에서 데이터를 주고받기 위한 DTO를 사용할 때, Mapper를 이용해 엔티티와 DTO 간의 변환을 처리할 수 있습니다. 이를 통해 데이터베이스 모델을 클라이언트에게 직접 노출하는 것을 방지할 수 있습니다.
  2. 복잡한 변환 로직: 엔티티와 DTO 간의 변환 로직이 복잡한 경우, Mapper를 사용하여 변환 로직을 분리하고 재사용할 수 있습니다.
  3. 다양한 데이터 소스: 여러 데이터 소스에서 데이터를 수집하여 하나의 객체로 변환해야 하는 경우, Mapper를 사용하여 각 데이터 소스로부터 수집한 데이터를 통합할 수 있습니다.

Mapper 예시

Entity

java
코드 복사
package com.example.board.model; import jakarta.persistence.*; import lombok.Data; @Entity @Data public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String username; private String password; private String role; }

DTO

java
코드 복사
package com.example.board.dto; import lombok.Data; @Data public class UserDto { private Long id; private String username; private String role; }

Mapper 인터페이스 (MapStruct 사용)

java
코드 복사
package com.example.board.mapper; import com.example.board.dto.UserDto; import com.example.board.model.User; import org.mapstruct.Mapper; @Mapper(componentModel = "spring") public interface UserMapper { UserDto toDto(User user); User toEntity(UserDto userDto); }

Service에서 Mapper 사용

java
코드 복사
package com.example.board.service; import com.example.board.dto.UserDto; import com.example.board.mapper.UserMapper; import com.example.board.model.User; import com.example.board.repository.UserRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class UserService { @Autowired private UserRepository userRepository; @Autowired private UserMapper userMapper; public UserDto save(UserDto userDto) { User user = userMapper.toEntity(userDto); user = userRepository.save(user); return userMapper.toDto(user); } public UserDto findByUsername(String username) { User user = userRepository.findByUsername(username); return userMapper.toDto(user); } }

결론

Spring Data JPA를 사용하면 많은 데이터베이스 관련 작업이 자동으로 처리되기 때문에 Mapper를 사용할 필요가 줄어듭니다. 하지만, DTO를 사용하거나 복잡한 객체 변환이 필요한 경우 Mapper를 사용하는 것이 유리할 수 있습니다. MapStruct와 같은 라이브러리를 사용하면 이러한 작업을 더욱 간편하게 처리할 수 있습니다. 각 프로젝트의 요구사항에 맞게 적절한 도구와 방법을 선택하는 것이 중요합니다.

'SpringBoot' 카테고리의 다른 글

SpringBoot-설정  (0) 2025.01.16

IntelliJ Console 창 에 로그를 출력하는 도중 특수문자가 깨지는 현상을 확인하였다.

 

 

1. Settings  Encoding UTF-8로 설정 변경

 

2. Help -> Edit VM Custom Option 에 아래 두줄 추가

 

3. 결과 

 한글 깨짐없이정상반영 확인

'SpringBoot > Error' 카테고리의 다른 글

청크 전송 인코딩(Chunked Transfer Encoding)란?  (0) 2025.01.08
페이징 기능이슈  (0) 2025.01.07

+ Recent posts