2023.04.25.-2023.07.31
대학교 2학년 때 Java
프로젝트로 동물병원 어플리케이션을 만든 적이 있었다. 하지만 그때는 Database
를 배우지 않은 상태여서 DB작업은 선배 두분이서 해주었다. 그때 담당한 역할은 UI개발 및 로그인, 병원 조회 등의 기능이었다.
이제는 혼자서 Java
프로젝트를 만들고 싶었다.
UI 및 기능 개발, 데이터베이스, 데이터베이스와 Java의 연동까지!
커뮤니티 어플리케이션
을 개발하려고 한다.
Windows 10
Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz 3.40 GHz
16GB
Java
jdk 17
Oracle 19c
처음 어플리케이션을 실행하면, 메인 화면이 나타난다.
게시글을 검색할 수 있고 볼 수 있다. 하지만, 로그인을 하지 않으면 댓글을 달거나 차단, 신고를 할 수 없다.
프로필 사진 옆의 닉네임은 로그인시만 본인 닉네임이 나타난다.
프로필 사진 클릭 시, 로그인을 위한 팝업이 뜨며 그를 통해 로그인/회원가입을 할 수 있다.
만약 ID, PW 모두 DB에 존재하고, 일치한다면 로그인이 성공한다.
로그인 횟수에 따른 로그인 차단 기능은 자바에 OAuth
를 넣을 수 있다면 넣어볼 것이다! 이메일로 로그인할 수 있게 하고, 이메일 인증도 받고, 만약 로그인이 차단된다면 이메일이 가서 그 인증번호를 입력해야 한다는 식으로!
Create Account창을 누르면, 회원가입 창으로 넘어간다.
저 사항이 다 만족되고, 중복이 없으면 회원가입이 된다!
(밑에 회원가입 버튼을 안그렸지만, 넣을 것이다!)
댓글 옆의 :
버튼은 댓글을 신고하는 기능이다.
좋아요 기능을 통해 좋아요를 눌러둔 게시글은 내 좋아요 목록에서 확인할 수 있다.
내 게시글 관리 창에서는 내가 올렸던 게시글을 확인할 수 있고, 이전에 작성한 게시글을 삭제할 수 있다.
삭제하기는 자신의 게시글 보기 UI에서만 뜬다.
개체
와 속성
추출을 하면 다음과 같다.
개체 | 속성 |
---|---|
회원 | 아이디, 비밀번호, 닉네임, 관심분야, 프로필사진, 한줄소개 |
게시글 | 게시글번호, 제목, 내용, 작성자, 사진, 분야 |
댓글 | 게시글번호,댓글번호,작성자아이디,댓글내용 |
분야 | 분야번호, 분야명 |
차단 | 사용자명, 차단아이디 |
신고 | 신고자명, 신고아이디 |
관계
추출을 하면 다음과 같다.
관계 | 참여 개체 | 관계 유형 | 속성 |
---|---|---|---|
속함 | 게시글(필수),댓글(선택) | 1:M | - |
작성 | 회원(필수),게시글(선택) | 1:M | - |
작성 | 회원(필수),댓글(선택) | 1:M | - |
포함 | 회원(필수),분야(선택) | 1:1 | - |
포함 | 게시글(필수),분야(선택) | 1:1 | - |
(차단, 신고 테이블은 제외)
진한 글씨 : 기본키
기울임 글씨 : 외래키
ALTER SESSION SET "_ORACLE_SCRIPT"=true;
create user community identified by 비밀번호;
grant dba to community;
community
계정을 생성한 후, dba
권한 부여
create table 분야(
분야번호 number primary key,
분야명 varchar2(20)
);
create table 회원(
아이디 varchar2(20) PRIMARY KEY,
비밀번호 varchar2(50) not null,
닉네임 varchar2(50) not null,
관심분야 number,
프로필사진 blob,
한줄소개 varchar2(100),
foreign key(관심분야) references 분야(분야번호)
);
create table 게시글(
게시글번호 number PRIMARY KEY,
제목 varchar2(50) not null,
작성자 varchar2(20) not null,
내용 clob not null,
사진 blob,
분야 number,
foreign key(분야) references 분야(분야번호),
foreign key(작성자) references 회원(아이디)
);
create table 댓글(
게시글번호 number,
댓글번호 number,
작성자 varchar2(20) not null,
내용 varchar(1000) not null,
primary key(댓글번호, 게시글번호),
foreign key(게시글번호) references 게시글(게시글번호),
foreign key(작성자) references 회원(아이디)
);
create table 차단(
사용자명 varchar2(20),
차단아이디 varchar2(20),
foreign key(사용자명) references 회원(아이디),
foreign key(차단아이디) references 회원(아이디),
primary key(사용자명, 차단아이디)
);
create table 신고(
신고자명 varchar2(20),
신고아이디 varchar2(20),
foreign key(신고자명) references 회원(아이디),
foreign key(신고아이디) references 회원(아이디),
primary key(신고자명, 신고아이디)
);
create sequence seq_theme; --분야번호 시퀀스 생성
create sequence seq_post; --게시글 시퀀스
create sequence seq_reply; --댓글 시퀀스
--분야 테이블
insert into 분야 values(seq_theme.nextval,'쇼핑');
insert into 분야 values(seq_theme.nextval,'음악');
insert into 분야 values(seq_theme.nextval,'영화');
insert into 분야 values(seq_theme.nextval,'게임');
insert into 분야 values(seq_theme.nextval,'스포츠');
insert into 분야 values(seq_theme.nextval,'학습');
insert into 분야 values(seq_theme.nextval,'패션');
insert into 분야 values(seq_theme.nextval,'뷰티');
insert into 분야 values(seq_theme.nextval,'뉴스');
insert into 분야 values(seq_theme.nextval,'가정');
insert into 분야 values(seq_theme.nextval,'경제');
insert into 분야 values(seq_theme.nextval,'정치');
insert into 분야 values(seq_theme.nextval,'컴퓨터');
insert into 분야 values(seq_theme.nextval,'종교');
insert into 분야 values(seq_theme.nextval,'여행');
insert into 분야 values(seq_theme.nextval,'만화');
insert into 분야 values(seq_theme.nextval,'역사');
insert into 분야 values(seq_theme.nextval,'외국어');
insert into 분야 values(seq_theme.nextval,'요리');
insert into 분야 values(seq_theme.nextval,'과학');
--회원 테이블
insert into 회원
values('dangdang','1111','당당',4,null,'안녕하세요. 당당입니다.');
--게시글 테이블
insert into 게시글
values(seq_post.nextval,'게시글 제목입니다.','dangdang','안녕하세요! 일단 아무글이나 적어보는 겁니다.... 데이터를 입력해야 하니까',null,14);
우측상단의 로그인해주세요
클릭 시 LoginPopupUI
화면 호출.
로그인한 사용자는 자신의 관심분야에 해당하는 게시글만 나옴
로그인된 사용자는 글쓰기, 내 게시글 관리, 설정 및 로그아웃을 할 수 있다.
Create Account
클릭 시 SignUpPopupUI
호출
아이디 및 닉네임은 중복 불가
MainUI
에서 게시글 클릭 시 나타나는 PostUI
아래쪽으로 스크롤 시 댓글을 달 수 있는 창이 보인다.
로그인을 하지 않은 사용자는 댓글을 달 수 없다.
작성자의 이름 클릭 시 게시글을 볼 수 있다.
로그인한 사용자는 댓글을 작성할 수 있다.
내가 아닌 다른 사용자의 프로필은 위와 같이 작성된 게시글 목록 및 닉네임, 한줄 소개로 표시된다.
자신의 내 게시글 관리
에서는 게시글 삭제
가 가능하도록 나온다.
게시글을 작성할 수 있는 UI이다.
제목 및 본문 내용, 관심분야를 지정해서 등록하면 게시글이 작성된다.
사용자의 사진을 변경, 삭제 및 닉네임 변경, 한줄 소개 변경을 할 수 있다.
저장을 눌러야 등록이된다.
사용자의 비밀번호를 변경하는 화면이다.
현재 사용자가 차단한 사용자를 보여주는 곳이다.
회원탈퇴를 하는 화면이며, 체크를 해야 회원탈퇴할 수 있다.
추후에 좋아요 기능 및 욕설 필터링 기능 등을 추가하면 좋을 것 같다.
또한 게시글을 작성할 때 사진을 추가할 수 있는 기능을 만들면 더욱더 유용한 어플리케이션이 완성될 것 같다.
혼자 모든것을 개발해본 것은 처음이었는데, 여럿이서 할 때 몰랐던 어려운 부분을 혼자 하면서 어떻게 해야하는지 생각하면서 깨닫게 된 것 같다.
데이터베이스랑 연동될 때 가장 기분이 좋았다!
[1]. 타이틀 바 삭제 및 윈도우 창 이동
[2]. 제약조건
[3]. 파일 선택
[4]. setDefault
[5]. 마우스위치
[6]. JPanel에서 JFrame 얻기
[7]. JList Scrollbar
[8]. checkBox