데이터 베이스는 Oracle DB를 활용할 것이다.
spring을 공부하며 이미 계정을 만든 게 있지만 중복되고 복잡하므로 새로운 계정을 생성한다.
cmd창을 열고 sqlplus "/as sysdba"를 입력한다.
접속이 되고 커맨드가 SQL> 로 변한다.
create user 유저명 identifies by 비밀번호; 를 입력하면 새로운 계정이 생겼다고 뜬다.
계정이 생성안될 땐 보통 유저 이름 앞에 c##을 붙여주면 된다. 또는 세미콜론을 빼지 않았나 생각해보자.
생성한 유저에 권한을 주기위해, grant connect, resource, dba to 유저명; 을 입력하면 끝이다.
이제 SQLDeveloper에서 새로 생성한 계정으로 접속을 하자.
접속한 후 프로젝트에 이용할 DB 테이블을 생성한다.
게시판에 대한 정보를 저장할 board_info_table,
게시글에 대한 정보를 저장할 content_table,
회원을 관리할 user_table을 생성한다.
게시판은 자유, 정보, 맛집, 비밀게시판이 있으므로 미리 값 4개를 넣어준다.
create sequence user_seq
start with 0
increment by 1
minvalue 0;
create sequence content_seq
start with 0
increment by 1
minvalue 0;
create table board_info_table(
board_info_idx number constraint BOARD_INFO_PK primary key,
board_info_name varchar2(500) not null
);
insert into board_info_table(board_info_idx, board_info_name) values (1, '자유게시판');
insert into board_info_table(board_info_idx, board_info_name) values (2, '정보게시판');
insert into board_info_table(board_info_idx, board_info_name) values (3, '맛집게시판');
insert into board_info_table(board_info_idx, board_info_name) values (4, '비밀게시판');
create table user_table(
user_idx number constraint USER_PK primary key,
user_name varchar2(50) not null,
user_id varchar2(100) not null,
user_pw varchar2(100) not null,
user_email varchar2(100) not null,
user_nickname varchar2(100) not null
);
create table content_table(
content_idx number constraint CONTENT_PK primary key,
content_subject varchar2(500) not null,
content_text long not null,
content_file varchar2(500),
content_file2 varchar2(500),
content_file3 varchar2(500),
content_writer_idx number not null
constraint CONTENT_FK1 references user_table(user_idx),
content_board_idx number not null
constraint CONTENT_FK2 references board_info_table(board_info_idx),
content_date date not null
);
commit;
테이블 생성에 사용한 sql 문이다. 기존과 다르게 게시판에 사진을 여러장 올리는 기능을 구현하고 싶은데, 일단은 일일이 파일이름 3개를 지정해서 최대 3장의 사진을 올릴 수 있도록 하고, 추후 수정이 필요하면 수정하겠다.
이제 각 테이블에 해당하는 빈을 생성한다.
beans라는 패키지를 생성한 후, 각각의 이름에 맞는 bean을 생성한다.
BoardInfoBean, UserBean, ContentBean.java로 생성했다.
각 Bean의 멤버변수는 위의 DB테이블에서 생성한 속성의 이름과 같아야 하므로 주의하자.
각 속성에 맞게 변수를 생성한 후 getter와 setter까지 생성해주자.
아래는 bean 중에 하나인 BoardInfoBean의 코드이다.
package kr.co.choboard.beans;
public class BoardInfoBean {
private int board_info_idx;
private String board_info_name;
public int getBoard_info_idx() {
return board_info_idx;
}
public void setBoard_info_idx(int board_info_idx) {
this.board_info_idx = board_info_idx;
}
public String getBoard_info_name() {
return board_info_name;
}
public void setBoard_info_name(String board_info_name) {
this.board_info_name = board_info_name;
}
}
mybatis와 spring을 연동하자.
mybatis와 spring jdbc 등의 dependency를 설정해준다.
dependency를 이용해 Oracle jdbc를 설정하려하지만, 오류가 뜨므로
Oracle DB설치시 있던 라이브러리를 직접 넣어준다.
c드라이브->app->app->user->product->18.0.0->dbhomeXE->jdbc->lib에 있는 ojdbc8파일을
WebContent->WEB-INF->lib에 직접 넣어준다.
db와 연결하기 위한 정보를 저장할 properties 파일을 생성하자.
WEB-INF 하위에 properties라는 폴더를 생성하고 db.properties파일을 만들자.
내용은 아래와 같다.
db.classname = oracle.jdbc.OracleDriver
db.url = jdbc:oracle:thin:@localhost:1521:orcl
db.username = 유저아이디
db.password = 비밀번호
쿼리문을 써서 db와 연결할 mapper 패키지를 생성하자.
일단 BoardMapper라는 클래스를 그 하위에 생성한다.
이제 db 접속을 위해 ServletAppContext에 코드를 적어주자.
//데이터베이스 접속 정보를 관리하는 Bean
@Bean
public BasicDataSource dataSource() {
BasicDataSource source = new BasicDataSource();
source.setDriverClassName(db_classname);
source.setUrl(db_url);
source.setUsername(db_username);
source.setPassword(db_password);
return source;
}
//쿼리문과 접속 정보를 관리하는 객체
@Bean
public SqlSessionFactory factory(BasicDataSource source) throws Exception{
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(source);
SqlSessionFactory factory = factoryBean.getObject();
return factory;
}
//쿼리문 실행을 위한 객체(Mapper 관리)
public MapperFactoryBean<BoardMapper> getBoardMapper(SqlSessionFactory factory) throws Exception{
MapperFactoryBean<BoardMapper> factoryBean = new MapperFactoryBean<BoardMapper>(BoardMapper.class);
factoryBean.setSqlSessionFactory(factory);
return factoryBean;
}
위의 코드를 적고 실행했을때 오류가 뜨지 않는다면 정상적으로 연결되었다고 볼 수 있다.
'프로젝트 > 게시판미니프로젝트' 카테고리의 다른 글
[프로젝트] 회원가입 관리 (0) | 2020.05.07 |
---|---|
[프로젝트] 상단 메뉴 관리 (0) | 2020.05.07 |
[프로젝트] 상단 메뉴 기본 구조 설정 (0) | 2020.05.06 |
[프로젝트] Spring 프로젝트 초기 설정 (0) | 2020.05.05 |
[프로젝트] Eclipse 초기 설정 (0) | 2020.05.05 |