Spring 66

09./ Spring Web MVC-Aop

Aspect Oriented Programming 공통관심사항과 핵심관심 사항을 분리(cross-cutting concern, core concern) 모든 클래스에 공통 관심 사항을 적용하기 위해 사용 예: 모든 클래스의 동작 시간을 측정하는 것을 전부 적용하기.... aop 없으면 모든 코드에 동일/반복 코드를 넣어야 @Aspect @Component public class TimeTraceAop { @Around("execution(* com.myvms..*(..))") // com.myvms 패키지의 모든 클래스에 적용 public Object execute(ProceedingJoinPoint joinPoint) throws Throwable{ long start = System.currentTi..

Spring/spring_old 2023.01.15

MariaDB의 JDBC 연결

http://www.gisdeveloper.co.kr/?p=4858 MySQL에서 파생된 MariaDB를 프로젝트에 사용하고 있는데요. 이 MariaDB를 Java에서 연결해 필요한 데이터를 조회하기 위해 JDBC를 사용하는 코드를 정리해 둡니다. import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class MainEntry { public static void main(String[] args) { Connection con = null; PreparedStatement p..

Spring 2023.01.15

07./ Spring Web MVC-DB연계-Spring DATA JPA

인터페이스 만으로 DB를 연계함 인터페이스 만으로 기본적인 CRUD를 제공함 findByName(), findByEmail() 처럼 메서드 이름 만으로 조회 기능 제공 페이징 기능 자동 제공 실무에서는 jpa와 spring data jpa를 기본으로 사용 ☞ 복잡한 쿼리는 Querydsl 이라는 라이브러리를 사용 → Duerydsl을 사용하면 쿼리도 자바코드로 안전하게 작성 가능하고 동적 쿼리도 편리하게 작성 이 조합으로 해결하기 어려운 쿼리는 JPA가 제공하는 네이티브 쿼리를 사용하거나, jdbcTemplate를 사용 @Configuration 설정 @Configuration public class SpringConfig { // private final EntityManager em; // @Auto..

Spring/spring_old 2023.01.14

07./ Spring Web MVC-DB연계-JPA

▶ JDBC(try catch, 중복 slq 등으로 아주 복잡함) ▶ JDBC Template(쿼리 중복제거, 알아서 예외처리...) ▶ JPA(쿼리 최소화, jdbc 포함, 객체로 처리) ** 전반적으로 sql을 작성하는데 필요한 PreparedStatement를 통한 입력시 발생하는 변환과정이 없어 애러가 적음 ** 몇가지만 외우면 간단한 쿼리문은 처리 가능함 ** 복잡한 쿼리는 직접 처리해야함 1. build.gradl에 추가(내부 적으로 jdbc를 갖고 있어 불러올 필요없음) dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.bo..

Spring/spring_old 2023.01.13

07./ Spring Web MVC-DB연계-jdbc template

repository에서 jdbcMemberRepository를 JdbcTemplateMemberRepository로 변경 짧으니까 보면서 하던지 외우던지 해야 할듯... public class JdbcTemplateMemberRepository implements MemberRepository{ private final JdbcTemplate jdbcTemplate; @Autowired public JdbcTemplateMemberRepository(DataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSource); } @Override public Long save(Member member) throws ClassNotFoundExcep..

Spring/spring_old 2023.01.13

07./ Spring Web MVC-DB연계

기존 memory(map class) 방식에서 데이터를 DB에 생성하고 가져오는 방식으로 변경 jdbc로 연동하던 중 팅김(애러 원인... => 초기화를 MemoryMemberRepository로 잘못 지정함... @Controller에서 생성자 호출 시 memberService를 통해 구현해야함(C->S->R) @Controller public class MemberController { private MemberService memberService; @Autowired public MemberController(MemberService memberService) { this.memberService = memberService; } 1. build.gradle 설정 DB연계를 위해서는 우선 DB 접..

Spring/spring_old 2023.01.12

06./ Spring Web MVC

화면을 구성하고 내용을 적용 홈화면 추가 -> 등록 화면 -> 조회 화면 구현 후에 spring과 연동함 templates 폴더 밑에 원하는 html 파일을 생성 class에서 @GetMapping("/경로") ==> 경로에 url 경로를 적어줌(localhost:8080/경로) return "html 파일 이름"; @Controller public class HomeController { @GetMapping("/") public String home(){ return "home"; } } @Controller에 member를 생성하기 위한 method를 생성(templates/members/createMemberForm) @GetMapping("/members/new") public String cr..

Spring/spring_old 2023.01.12

05./ Spring -Member-03-Bean 등록-Dependency Injection

@Controller를 하면 spring container가 해당 객체를 생성해서 가지고 있음 => spring container에서 bean이 관리되고 있는 것임 이때부터는 직접 객체를 생성하지 말고 spring container에서 받아서 써야함. (안 그러면 이 사람, 저 사람 각자 객체를 생성해서 각자 사용함.. 안좋음 ???) 그래서 spring container에 등록해서 사용하는 방식으로 수정함 그러기 위해서는 생성자에 @Autowired를 해주면됨 그러면 controller -> service -> repository 순으로 dependency injection를 요구함 요청에 따라 @Service, @Repository 를 해줌 생성자가 한개만 있으면 @Autowired를 안해줘도 알아서..

Spring/spring_old 2023.01.12