2024. 7. 15. 18:33ㆍReact
mybatis-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0/EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="jdbcTypeForNull" value="NULL"/>
<!-- todo_name underscore 표기법을 camelCase 표기법으로 변경 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
</configuration>
config.properties
spring.datasource.hikari.driver-class-name=oracle.jdbc.OracleDriver
spring.datasource.hikari.jdbc-url=jdbc:oracle:thin:@localhost:1521/xe
spring.datasource.hikari.username=kh_WORKBOOK
spring.datasource.hikari.password=kh1234
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.maximum-pool-size=5
spring.datasource.hikari.idle-timeout=600000
spring.datasource.hikari.pool-name=MyHikariCP
spring.datasource.hikari.auto-commit=false
spring.servlet.multipart.file-size-threshold = 52428800
spring.servlet.multipart.max-file-size = 10485760
spring.servlet.multipart.max-request-size = 52428800
spring.servlet.multipart.location = C:/Users/user1/Desktop
my.member.location = C:/Users/user1/Desktop/uploadImages/member/
my.member.webpath = /images/member/
my.board.location = C:/Users/user1/Desktop/uploadImages/board/
my.board.webpath = /images/board/
application.properties
server.port=9091
#logging.level.현재패키지명
#com.kh에서 시작하는 모든 코드의 정보를 출력
logging.level.com.kh=debug
#임시로 컴퓨터에 저장한 정보(세션) 추적 방식을 쿠키로 설정
#사용자의 세션 정보를 쿠키를 통해 관리
server.servlet.session.tracking-modes=cookie
#코드 변경시 폴더를 자동으로 재시작 -> 개발의 편의성 올리기
spring.devtools.livereload.enbled=true
#템플릿 파일이 변경될 때마다 자동으로 새로운 html 내용을 반영
spring.thymeleaf.cache=false
** 세션과 쿠키의 차이
쿠키(cookie) : 사용자의 브라우저(인터넷)에 저장.
- 만료되는 시간 설정 가능. 사용자 컴퓨터에 작은 텍스트 파일로 데이터를 저장
- 보안이 취약하므로 민감한 정보 저장 x
- 로그인 상태 유지, 방문 기록, 사용자 설정 저장 등에 사용
세션(session) : 개발자 서버에 저장
- 사용자가 브라우저를 닫거나, 서버에서 세션을 만료 시킬 떄까지 유지
- 세션 만료 시간은 서버에서 설정 가능
- 사용자가 서버에 직접 접근할 수 없기 때문에 보안성이 높음
- 세션 ID만 사용자 쿠키로 전송되고, 이를 통해 세션을 식별
- 로그인 정보 유지, 장바구니 정보 저장, 사용자 맞춤형 서비스 제공 등에 사용
todo-mapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0/EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<mapper namespace="com.kh.mapper.TodoMapper">
<select id="idCheck">
SELECT COUNT(*) FROM TODO_MEMBER WHERE ID = #{id}
</select>
<insert id="signup">
INSERT INTO TODO_MEMBER VALUES(SEQ_TODO_MEMBER_NO.NEXTVAL, #{id}, #{pw}, #{name})
</insert>
</mapper>
TodoMember
package com.kh.dto;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
public class TodoMember {
private int todoMemberNo;
private String id;
private String pw;
private String name;
}
TodoMapper
package com.kh.mapper;
import org.apache.ibatis.annotations.Mapper;
import com.kh.dto.TodoMember;
@Mapper
public interface TodoMapper {
int idCheck(String id);
int signup(TodoMember todoMember);
}
DBConfig
package com.kh.common.config;
import java.io.IOException;
import javax.sql.DataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
// 컴퓨터 설정, 구성
@Configuration
@PropertySource("classpath:/config.properties") //추후 변
public class DBConfig {
@Autowired
private ApplicationContext applicationContext; // 폴더 흐름
//import org.springframework.context.ApplicationContext; 할 것.
@Bean
@ConfigurationProperties(prefix = "spring.datasource.hikari")
public HikariConfig hikariConfig() { //주소 설정
return new HikariConfig();
}
@Bean //Spring Context 스프링 안에서 관리되고 있는 기능임을 명시하는 설정
public DataSource dataSource(HikariConfig config) { //연결된 db를 스프링에서 관리. -> 관리하는 용도로 등록한 것
DataSource dataSource = new HikariDataSource(config);
return dataSource;
}
//Mybatis 설정 추가
//SqlSessionFactory : SqlSession을 만드는객체
@Bean
public SqlSessionFactory sessionFactory(DataSource dataSource) throws Exception {
SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource);
//매퍼 파일이 모여있는 경로 설정
sessionFactoryBean.setMapperLocations(applicationContext.getResources("classpath:/mappers/**.xml")); //추후 변경
//별칭 지정해야하는 dto가 모여있는 패키지 지정
sessionFactoryBean.setTypeAliasesPackage("com.kh.dto"); //추후 변경
//mybatis 설정 파일 경로 지정
sessionFactoryBean.setConfigLocation(applicationContext.getResource("classpath:mybatis-config.xml")); //추후 변경
return sessionFactoryBean.getObject();
}
//기본 sql 실행 + Commit 처리 = 트랜잭션 처리. (commit = 최종 파일 저장)
public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sessionFactory) {
return new SqlSessionTemplate(sessionFactory);
}
//전반적인 Commit과 Rollback과 같은 관리를 해주는 트랜잭션 매니저
//DataSourceTransactionManager = 트랜잭션 매니저
@Bean
public DataSourceTransactionManager dataSourceTransactionManager(DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
}
** @PropertySource("classpath:/config.properties")
@PropertySource : properties 파일의 내용을 이용함을 명시
다른 properties 파일을 추가하고 싶다면 어노테이션을 추가
=> @PropertySource("classpath:/config2.properties")
** @ConfigurationProperties(prefix = "spring.datasource.hikari")
properties 파일의 내용을 이용해서 생성되는 bean을 설정하는 어노테이션
prefix = 시작 위치를 지정해서 'spring.datasource.hikari'로 시작하는 설정을 모두 적용
spring.datasource.hikari = Oracle DB 연결할 때 쓰는 풀. 빠르고 가벼움
** sessionFactoryBean.setTypeAliasesPackage("com.kh.dto");
별칭 지정해야하는 dto가 모여있는 패키지 지정
해당 패키지에 있는 모든 클래스가 클래스명으로 별칭이 지정됨
aliase = 별칭, package 폴더 밑에 있는 파일 모두
'React' 카테고리의 다른 글
React - SpringBoot 연결하기 (회원가입+todo리스트 만들기) 4 (0) | 2024.07.16 |
---|---|
React - SpringBoot 연결하기 (회원가입+todo리스트 만들기) 3 (0) | 2024.07.16 |
React - SpringBoot 연결하기 (회원가입+todo리스트 만들기) 1 (0) | 2024.07.15 |
프로필 사진 넣기 (0) | 2024.07.12 |
PagiNation 2 (0) | 2024.07.12 |