[Spring] 7. AOP
·
Backend/스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
AOP가 필요한 상황모든 메소드의 호출 시간을 측정하고 싶다면?공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern)회원 가입 시간, 회원 조회 시간을 측정하고 싶다면?package hello.hellospring.service;@Transactionalpublic class MemberService {/*** 회원가입*/ public Long join(Member member) { long start = System.currentTimeMillis(); try { validateDuplicateMember(member); //중복 회원 검증 memberRepository...
[Spring] 6_4. 스프링 DB 접근 기술 - JPA
·
Backend/스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JdbcTemplate으로 바꾸고 나니까 중복되는 코드가 확! 줄었다. 그럼에도 불구하고 아직도 SQL 쿼리도 개발자가 직접 작성해야한다. . .JPA는 기존의 반복 코드는 물론이고, 기본적인 SQL도 JPA가 직접 만들어서 실행해준다.JPA를 사용하면, SQL과 데이터 중심의 설계에서 객체 중심의 설계로 패러다임을 전환을 할 수 있다.JPA를 사용하면 개발 생산성을 크게 높일 수 있다.여기서는 JPA로 코드를 작성하는 방법을 간단하게 알아볼거고, 이후 JPA 1 강의를 보며 JPA로 코드를 작성해볼 예정이다!build.gradle 파일에 JPA, h2 데이터베이스 관련 라이브러리 추가dependencies { implementation 'org.springframework.boot:spring-b..
[Spring] 6_3. 스프링 DB 접근 기술 - 스프링 JdbcTemplate
·
Backend/스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
순수 Jdbc와 동일한 환경설정을 하면 된다.스프링 JdbcTemplate과 MyBatis 같은 라이브러리는 JDBC API에서 본 반복 코드를 대부분 제거해준다. 하지만 SQL은 직접 작성해야 한다.RowMapper란?RowMapper는 SQL 결과의 각 행을 Java 객체로 변환하는 "매핑 도구"private RowMapper memberRowMapper(){ return (rs, rowNum) -> { Member member = new Member(); member.setId(rs.getLong("id")); // DB 컬럼 "id" → 객체 필드 member.setName(rs.getString("name")); // DB 컬럼 "name" →..
[NLP] 1. 텍스트 마이닝 기초
·
Data/AI
텍스트마이닝 패러다임의 변화BERT지금은 텍스트 분류 등의 작업에 딥러닝 기반의 BERT를 쓰는 것이 일반화됐다.BERT는 트랜스포머에 기반한 모형으로, 자세한 작동원리를 이해하기 매우 어려운 편인데도 최근 대부분의 작업에 사용된다.책 한권 정도의 분량에 대해서 문서를 분류해야할 때는 카운터 기반의 문서 표현이 BERT같은 최신모형 보다 낫다는 연구결과가 있다.카운터 기반의 문서 표현문서를 사용된 단어의 빈도로 표현하는 것이 과정에서 단어들이 텍스트에 나타난 순서에 대한 정보는 사라진다. 즉, 사람이 문서를 이해할 때 가장 중요하게 생각하는 문맥에 대한 정보는 사라지고, 대신 단어에 대한 통계만이 남게 된다. 그러나 텍스트 마이닝의 원래 목적, 텍스트 내용을 기반으로 어떤 사건을 예측하는 것은 이 정보의..
[Spring] 어노테이션 정리
·
Backend/스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
1. @Transactional메소드나 클래스 단위로 트랜잭션을 적용하는 어노테이션해당 메소드가 정상적으로 완료되면 커밋되고,예외(Exception)가 발생하면 자동으로 롤백(Rollback)주로 DB를 다루는 서비스 계층에 붙여 사용기본적으로 RuntimeException 또는 Error가 발생할 때만 롤백(SQLException 같은 체크 예외는 별도로 설정해야 롤백)테스트 케이스에 이 어노테이션이 있으면 테스트 시작 전에 트랜잭션을 시작하고, 테스트 완료 후에 항상 롤백한다. 이렇게 하면 DB에 데이터가 남지 않으므로 다음 테스트에 영향을 주지 않는다.import org.springframework.transaction.annotation.Transactional;import org.springfr..
[Spring] 6_2. 스프링 DB 접근기술 - 순수 JDBC
·
Backend/스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
애플리케이션에서 DB에 연동하여 메모리가 아닌 DB에 쿼리를 날리는 것(JDBC) → 20년 전 방식package hello.hello_spring;import hello.hello_spring.repository.JdbcMemberRepository;import hello.hello_spring.repository.MemberRepository;import hello.hello_spring.repository.MemoryMemberRepository;import hello.hello_spring.service.MemberService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.contex..
[Spring] 6_1. 스프링 DB 접근 기술 - H2 데이터베이스 설치
·
카테고리 없음
H2 데이터베이스 설치H2 데이터베이스: 개발이나 테스트 용도로 가볍고 편리한 DB, 웹 화면 제공맥 유저의 경우 h2.sh에 권한을 부여 후, 실행chmod 755 h2.sh./h2.shdesktop에 설치된게 아니라 나는 /Users/사용자명 에 설치되어 있었다.이후에 충돌오류를 피하기 위해 파일로 접근하던 JDBC URL을 변경해준다.jdbc:h2:tcp://localhost/~/test테이블 생성하기drop table if exists member CASCADE;create table member( id bigint generated by default as identity, name varchar(255), primary key (id));H2 데이터베이스에 접근해서 Member..
[Spring] 5. 회원관리 예제(웹 MVC 개발)
·
Backend/스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원 웹 기능 - 홈 화면 추가홈 컨트롤러 추가@Controllerpublic class HomeController { // localhost 8080으로 들어오면 home()이 호출된다. @GetMapping("/") public String home(){ return "home"; }}회원관리용 홈 Hello Spring 회원 기능 회원 가입 회원 목록 실행하고 localhost:8080에 들어가면 이전에 만들어둔 index.html이 아닌 home.html이 뜬다. 왜일까?index.html 은 컨트롤러 매핑이 아예 없을 때 자동으로 뜨는 화면Spring Boot는 reso..
[Spring] 4. 스프링 빈과 의존관계
·
Backend/스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
컴포넌트 스캔과 자동 의존관계 설정회원 컨트롤러에 의존관계 추가package hello.hello_spring.controller;import hello.hello_spring.service.MemberService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;@Controllerpublic class MemberController { private final MemberService memberService; @Autowired public MemberController(MemberService memberService) { ..
[Bigdata] 5. 맷플롯립 알아보기
·
Data/Bigdata
5.1 데이터 시각화컴퓨터 화면에 시각적 이미지 이용하여 데이터를 효과적으로 보여주는 방법데이터 시각화의 필요성복잡한 데이터에 대한 이해를 돕는다의사결정을 지원한다효과적인 커뮤니케이션 수단이 된다데이터 수집과 전처리 못지 않게 시각화를 통해서 그 의미를 잘 전달하는 것 역시 데이터 과학자가 해야할 중요한 일들 중 하나5.2 matplotlib의 다양한 기능 맛보기맷플롯립 코드 살펴보기import matplotlib.pyplot as pltyears = [2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022]ranks = [5,3,2,3,4,6,7,4]# 그래프 그리기 plt.plot(x축데이터, y축데이터, 선의 색상, 마커 정보)plt.plot(years, ranks, c..