전체 글
'기'발하고 '창'의적인 블로그
-
db의 데이터를 처리하는 클래스 : user_info_dao.java package com.example.jspexam; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; import java.sql.*; import java.util.HashMap; import java.util.Map; public class user_info_dao { private static user_info_dao instance = new user_info_dao(); // 2. 외부에서 생성자를 호출할 수 없도록 생성자에 private제한을 ..
JSP 간단 회원관리 과제: 마기창db의 데이터를 처리하는 클래스 : user_info_dao.java package com.example.jspexam; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; import java.sql.*; import java.util.HashMap; import java.util.Map; public class user_info_dao { private static user_info_dao instance = new user_info_dao(); // 2. 외부에서 생성자를 호출할 수 없도록 생성자에 private제한을 ..
2022.10.11 -
MyBatis 관련 라이브러리 추가 org.mybatis mybatis 3.4.6 org.mybatis mybatis-spring 1.3.2 org.springframework spring-tx ${org.springframework-version} org.springframework spring-jdbc ${org.springframework-version} 📌추가설명 더보기 spring-jdbc/spring-tx : 스프링에서 데이터베이스 처리와 트랜잭션 처리 mybatis/mybtis-spring: MyBatis와 스프링 연동용 라이브러리 SqlSessionFactory SqlSessionFactory는 데이터베이스와의 연결과 SQL의 실행에 대한 모든 것을 가진 가장 중요한 객체다. 이 객체가 D..
MyBatis 설정MyBatis 관련 라이브러리 추가 org.mybatis mybatis 3.4.6 org.mybatis mybatis-spring 1.3.2 org.springframework spring-tx ${org.springframework-version} org.springframework spring-jdbc ${org.springframework-version} 📌추가설명 더보기 spring-jdbc/spring-tx : 스프링에서 데이터베이스 처리와 트랜잭션 처리 mybatis/mybtis-spring: MyBatis와 스프링 연동용 라이브러리 SqlSessionFactory SqlSessionFactory는 데이터베이스와의 연결과 SQL의 실행에 대한 모든 것을 가진 가장 중요한 객체다. 이 객체가 D..
2022.10.10 -
1. JdbcTemplate이란? Spring Framework로 앱을 제작할 때 Data Access Layer에서 사용하는 기술은 크게 3가지입니다. 1. JPA (구현체로 Hibernate를 많이 사용합니다.) 2. MyBatis (구 iBatis) 3. JdbcTemplate 요즘은 JPA가 많이 사용된다고 알고 있습니다. 지금 보고 있는 Spring Framework 입문 책에서 JdbcTemplate 객체를 가지고 Data Access를 처리하고, 또 Spring Framework 초창기부터 존재해왔다니 나름의 역사도 있는 JdbcTemplate 클래스를 공부할 필요는 있는 것 같습니다. 먼저 Java로 가장 Low하게 Data Access를 처리하기 위해선 java.sql.*에 있는 API를..
[Spring JDBC] JdbcTemplate1. JdbcTemplate이란? Spring Framework로 앱을 제작할 때 Data Access Layer에서 사용하는 기술은 크게 3가지입니다. 1. JPA (구현체로 Hibernate를 많이 사용합니다.) 2. MyBatis (구 iBatis) 3. JdbcTemplate 요즘은 JPA가 많이 사용된다고 알고 있습니다. 지금 보고 있는 Spring Framework 입문 책에서 JdbcTemplate 객체를 가지고 Data Access를 처리하고, 또 Spring Framework 초창기부터 존재해왔다니 나름의 역사도 있는 JdbcTemplate 클래스를 공부할 필요는 있는 것 같습니다. 먼저 Java로 가장 Low하게 Data Access를 처리하기 위해선 java.sql.*에 있는 API를..
2022.10.10 -
PointCut 표현식을 정리 포인트컷에는 다양한 명시자를 이용할 수 있습니다. execution Advice를 적용할 메서드를 명시할 때 사용합니다. within 특정 타입에 속하는 메서드를 JoinPoint로 설정되도록 명시할 때 사용합니다. bean 스프링 버전 2.5 버전부터 지원하기 시작했으며, 스프링 빈을 이용하여 JoinPoint를 설정합니다. execution 명시자 execution([수식어] 리턴타입 [클래스이름].이름(파라미터) 수식어 : public, private 등 수식어를 명시합니다. (생략 가능) 리턴타입 : 리턴 타입을 명시합니다. 클래스이름 및 이름 : 클래스이름과 메서드 이름을 명시합니다. (클래스 이름은 풀 패키지명으로 명시해야합니다. 생략도 가능) 파라미터 : 메서드..
AOP PointCut 표현식PointCut 표현식을 정리 포인트컷에는 다양한 명시자를 이용할 수 있습니다. execution Advice를 적용할 메서드를 명시할 때 사용합니다. within 특정 타입에 속하는 메서드를 JoinPoint로 설정되도록 명시할 때 사용합니다. bean 스프링 버전 2.5 버전부터 지원하기 시작했으며, 스프링 빈을 이용하여 JoinPoint를 설정합니다. execution 명시자 execution([수식어] 리턴타입 [클래스이름].이름(파라미터) 수식어 : public, private 등 수식어를 명시합니다. (생략 가능) 리턴타입 : 리턴 타입을 명시합니다. 클래스이름 및 이름 : 클래스이름과 메서드 이름을 명시합니다. (클래스 이름은 풀 패키지명으로 명시해야합니다. 생략도 가능) 파라미터 : 메서드..
2022.10.09 -
AOP (관점 지향 프로그래밍) 📌 1. AOP란? 문제를 바라보는 관점을 기준으로 프로그래밍을 하는 기법 AOP 구현 방법으로는, 여러 가지가 존재하는데, 일반적으로 공통 관심 사항을 구현한 코드를 핵심 로직을 구현한 코드에 삽입하는 것이다. 비슷한 동작을 하는 인터페이스와 필터가 있는데 이들은 웹에서 사용한다. AOP는 프로그래밍 기법 중 하나이며, 특정 패키지의 특정 클래스 전체, 특정 클래스의 특정 메서드 전체 등 적용 범위를 다양하게 설정하여 공통 기능으로 사용할 수 있다. 공통 기능 == 공통 관심 사항 핵심 로직 == 핵심 관심 사항 핵심 비즈니스 기능과 구분하기 위해 공통 기능을 공통 관심 사항(cross-cutting concern)이라고 표현하며, 핵심 로직을 핵심 관심 사항(core ..
[Spring] 스프링 AOP (Spring AOP)란?AOP (관점 지향 프로그래밍) 📌 1. AOP란? 문제를 바라보는 관점을 기준으로 프로그래밍을 하는 기법 AOP 구현 방법으로는, 여러 가지가 존재하는데, 일반적으로 공통 관심 사항을 구현한 코드를 핵심 로직을 구현한 코드에 삽입하는 것이다. 비슷한 동작을 하는 인터페이스와 필터가 있는데 이들은 웹에서 사용한다. AOP는 프로그래밍 기법 중 하나이며, 특정 패키지의 특정 클래스 전체, 특정 클래스의 특정 메서드 전체 등 적용 범위를 다양하게 설정하여 공통 기능으로 사용할 수 있다. 공통 기능 == 공통 관심 사항 핵심 로직 == 핵심 관심 사항 핵심 비즈니스 기능과 구분하기 위해 공통 기능을 공통 관심 사항(cross-cutting concern)이라고 표현하며, 핵심 로직을 핵심 관심 사항(core ..
2022.10.09 -
public class MemberPrinter { private DateTimeFormatter dateTimeFormatter; public void print(Member member) { if (dateTimeFormatter == null) { System.out.printf( "회원 정보: 아이디=%d, 이메일=%s, 이름=%s, 등록일=%tF\n", member.getId(), member.getEmail(), member.getName(), member.getRegisterDateTime()); } else { System.out.printf( "회원 정보: 아이디=%d, 이메일=%s, 이름=%s, 등록일=%s\n", member.getId(), member.getEmail(), membe..
객체 자동주입할 떄 해당하는 빈 객체가 없을 시 예외가아닌 null값으로 대체하는 방법(@Nullable)public class MemberPrinter { private DateTimeFormatter dateTimeFormatter; public void print(Member member) { if (dateTimeFormatter == null) { System.out.printf( "회원 정보: 아이디=%d, 이메일=%s, 이름=%s, 등록일=%tF\n", member.getId(), member.getEmail(), member.getName(), member.getRegisterDateTime()); } else { System.out.printf( "회원 정보: 아이디=%d, 이메일=%s, 이름=%s, 등록일=%s\n", member.getId(), member.getEmail(), membe..
2022.10.09