[ Spring ] 트랜잭션 Transaction
·
Spring
트랜잭션하나의 논리적 작업단위member 테이블, hobby 테이블1 : N관계 기능 설정 방법xml 방식자바 방식⇒ 어노테이션을 쓰는건 xml, 자바 방식 둘 다 써야@Transactional ( propagation = Propagation.REQUIRED)에서 @Transactional 만 사용하기 괄호생략)928pg.@RequestParam(”userID”)String useID 에서 userID끼리 이름이 같으니 생략 가능 → String userID로resources밑에 db.properties생성db.driver = net.sf.log4jdbc.sql.jdbcapi.DriverSpydb.url = jdbc:log4jdbc:oracle:thin:@192.168.0.18:1521:XEdb.use..
[ Spring ] MyBatis
·
Spring
DB연동(MyBatis)SQL MapperJava와 Sql(Xml)분리자동으로 파라미터 값 매핑insert into student(a,b,c,d,e,f) values(변수,변수,…)자동으로 결과값 객체로 매핑select * from student → StudentVO 매핑해서 리턴구조바깥에 mapper태그mapper안에 DAO SQL 실행할때(지정 방법)mapper 태그의 namespace, 태그의 id ⇒ namespace.id(student.all)메서드selectList() : 여러개 (1개도 가능)selectOne() : 1개insert(), update(), delete()실행시 : .메서드명 (” namespace.id ”[ , 파라미터 (객체) ] ) #{ 변수명 } - prepared..
[ Spring ] DI, IOC, AOP
·
Spring
DI (의존성 주입), IOC (제어의 역전)자바에서 클래스가 다른 클래스의 기능을 사용하려면 클래스의 생성자를 직접 호출해야했음Spring에서는 이를 자동으로 해주고, 컨테이너가 연관관계를 직접 규정해주는데, 이를 의존성 주입(DI)이라고한다.또, DI로 인해 객체의 제어를 개발자가 하는게 아니라 스프링이 담당하기 때문에, 이를 제어의 역전(IOC)라고 한다. 인터페이스와 클래스의 관계는 점선화살표로 BoardController : 인터페이스BoardControllerImpl: 클래스  의존관계 주입 방식 3가지필드 ←주로 필드에 하는 방식을 많이 사용함setter생성자 AOP 관점지향 프로그래밍OOP(객체지향)과 상반되는 개념. OOP는 객체를 나누는데에 중점을 두었다면,AOP는 어떠한 기능을 중심으..
[ Spring ] 어노테이션 모음
·
Spring
@Autowired자동주입@Autowired 전제조건: 빈컨테이너에 생성되어 있는 객체만 가능기본적으로 타입을 기준으로 주입Autowired는 필드마다 하나하나씩 위에 작성해줘야함ex)public class MemberServiceimpl implements MemberService { @Autowired //자동 주입(빈에 등록된 객체만 가능) private MemberDAO dao; //chapter2처럼 setter를 통해 IoC로 의존성을 주입했는데, //Autowired를 통해 자동으로 해준다. // public void setMemberDAO(MemberDAO dao) {// this.dao = dao;// } @Quailifier("빈이름 어노테이션")서로 다른 이름으로 같은 타입으로부..
[ Spring Boot ] N:1 (다대일) 연관관계 part2
·
Spring Boot
@ManyToOne 과 Eager/Lazy Loading@ManyToOne을 사용시 FK쪽의 엔티티를 가져올때 PK쪽의 엔티티도 같이 가져온다.실제로 쿼리를 실행하면, 내부적으로 left outer join처리가 되어 데이터를 가져온다.하지만 매번 이렇게 여러 테이블을 조인하여 가져온다면 효율이 떨어질 것이다. fetch는 Lazy loading을 권장한다.위와 같이 연관관계를 가진 모든 엔티티를 같이 로딩하는 것을 'Eager loading'이라고 한다.(즉시 로딩이라고도 한다.)즉시 로딩은 성능 저하를 피할 수 없는데, JPA에서는 연관관계 데이터를 어떻게 가져올 것인가 를 fetch(패치) 라고 한다. 그리고, 즉시 로딩의 반대 개념을 'Lazy loading'(지연 로딩)이라고 한다.Board.j..
[ Spring Boot ] N:1 (다대일) 연관관계 part1
·
Spring Boot
연관관계와 관계형 DB 설계관계형 DB 는 entity간의 relation이 중요👉1:1 1:N N:1 M:N이를 표현하기 위해 PK와 FK사용 @EnableJpaAuditing자동으로 시간을 처리해주는 어노테이션Application 클래스위에 작성 @ManyToOneN:1 관계ex) board : member  관계 (멤버 한명당 여러개의 글을 작성할 수 있다)@Entity@Builder@AllArgsConstructor@NoArgsConstructor@Getter@ToString(exclude = "writer")public class Board extends BaseEntity{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) ..
[ Spring ] 스프링 기초, 의존성 주입
·
Spring
🍃 Spring 객체지향, 디자인패턴추가 라이브러리dbcp, mybatissecurity, jpa, thymeleaf → 스프링 부트할때 할거임Spring framework 사용이유: frame = 뼈대, 틀 → 누가 만들어도 구조가 비슷해져서 유지보수가 쉬워짐bean이 객체를 관리할테니 개발자는 비즈니스로직을 처리해라!IOC : Inverse of control 제어 역행DI : Dependency Injection 의존성 주입AOP : Aspect-oriented Programming 관점지향프로젝트 종류: Maven, Gradlebuild(컴파일) : 컴파일 + 테스트 + 검증스프링 주요 기능Core : 다른 기능과 설정을 분리하기 위한 IOC 제공Context : 애플리케이션의 각 기능을 담당하..
[ Servlet ] 나만 보고싶은 간단정리 part3
·
JSP & Servlet
포워드: 서블릿이 다른 서블릿이나 JSP에 데이터를 전달하는 방법리다이렉트 / 클라이언트가 서버에 2번 요청, 공유 불가redirect : 서버에서 동작refresh 서버 or 클라이언트(html)에서 동작location : 클라이언트 (JS) 에서 동작포워딩 / 클라이언트가 서버에 1번 요청, 공유 가능일반적인 포워딩 기능클라이언트의 웹브라우저를 거치지 않고 서버에서 포워딩이 진행됨dispatch ex) Refresh Server vs client둘 다Server - Servlet에서@WebServlet("/first")public class FirstServlet extends HttpServlet { private static final long serialVersionUID = 1L; ..
[ Servlet ] 나만 보는 간단정리 part2
·
JSP & Servlet
Servlet이 톰캣 내부에서 동작하는 과정회색박스는 톰캣 , 순서: 클라이언트 → 톰캣 → 서블릿 → DB → 서블릿 → 톰캣 → 클라이언트 호스트ex) xxx.naver.com→ ‘xxx’를 호스트라고 한다. 이미지는 img/google.png 위치에 있다. but 앞에 project이름 thisisforstudy를 붙여줘야함.→ tomcat 더블클릭 →web modules 창에서 path를 edit 해준다 . ex)/pro05 → / 로 수정그럼 로 코드 작성해도댐제일 많이 쓰는방식: jsp 코드 달아주기/img/google.png">//contextPath가 무엇이던간에 이어준다.request 객체 (요청).getSession().getParameter() : String타입으로 객체를 받음...
[ Servlet ] 나만 보려고 올리는 간단정리 part1
·
JSP & Servlet
JSP vs ServletJSP: html 안에 Java 코드가 있는 형태 ex) Servlet : Java 안에 html, css , js가 있는 형태 클라이언트-서버 (CS) 기반 장점로직이 변경되어도 클라이언트 수정필요 X → 서버에서만 처리하면됨 정적 웹 프로그래밍JSP전에는 정적 웹프로그래밍 방식을 사용했음→ 브라우저에서 요청하면 고정 페이지를 그대로 전달해줌동적 웹 프로그래밍WAS (웹 애플리케이션 서버)가 관리자 역할을 함웹어플리케이션정적인 웹앱의 기농 + 동적인서비스(Servlet, JSP 등)응답 코드200번대 : 정상400번대 : 클라이언트에서의 오류500번대 : 서버에서의 오류Servlet클라이언트의 요청에 따라 서버쪽에서 동적으로 서비스를 제공하는 자바클래스Servlet 메서드초기화..
hanjuCoding