반응형

https://kimyhcj.tistory.com/295

 

Spring Boot + JPA + openjdk 11 Error (Error creating bean with name 'entityManagerFactory')

Spring Boot + JPA 샘플 프로젝트로 이것저것 하다가 JDK 를 openjdk11로 변경했더니 startup 할 때 오류가 발생한다. [상황]  16:27 ERROR o.s.boot.SpringApplication - Application run failed org.springfra..

kimyhcj.tistory.com

 

Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister

 

반응형
반응형

월별 공급가액 및 부가세

각 거래처 별로 해당 년도의 월별 공급가액 및 부가세를 출력 하는 화면

각 월을 클릭 하게 되면 해당 월에 일자 별 공급 가액 및 부가세를 조회 가능 

 

필요하다면 년도를 선택 해서 년도별 검색도 가능하도록 추가 예정

 

반응형

'IT > 우원프로젝트' 카테고리의 다른 글

우원 프로젝트 v1.0 정리  (0) 2020.05.01
2020-04-21 DB를 날려버리다......  (0) 2020.04.22
우원프로젝트 2020-04-07  (0) 2020.04.07
우원 프로젝트 2020-03-31  (0) 2020.04.01
우원 프로젝트 2020-03-29  (0) 2020.03.30
반응형

우원 프로젝트 v1.0 정리

한달여 간의 개인 프로젝트에 대한 소감 및 v1.0 버전에 대한 소감문을 정리 하려고 한다. 

프로젝트 첫 시작시 아래와 같은 목적으로 프로젝트를 시작 하였다.

 

ㅁ 우원프로젝트 

  ㅇ 프로젝트 개요 : 아빠가 사용 하는 판매재고 프로그램의 계약 만료로 그와 동일한 기능을 하는 판매재고 웹 사이트를 제작 

 

ㅁ 해야 할 일 

  ㅇ  요구사항 정리 

      - 프로세스 정리 

      - 메뉴 구성 

      - DB 구성 

      - 개발 언어, 기술 정리 (스프링, JSP, VUE 로해보고 싶은데... 부트스트랩, TUI 등 등)

      - 보안 구성 (스프링 시큐리티) 

      - 트랠로를 통한 TODO 리스트 지속 관리 

 

ㅁ 프로젝트 목표 

   ㅇ 4월 10일 내로 사용 가능한 우원 웹 솔루션 제작 

   ㅇ 개발 건에 대해서는 블로그에 기록 남기기 

   ㅇ GCP 서버 운영 하며 리눅스 다루기 

   ㅇ 깃, 젠킨스, 뱀부?, 깃엑션 등을 이용한 CI 구성 

 

처음 시작은 여러가지 시도를 하려 생각 하였으나 기한이 정해져 있다 보니 점점 간소화 시키게 되었다. 

특히 내부에서만 사용 할 수 있는 형태라 로그인 및 보안 관련 부분을 삭제 하였던 것이 가장 큰 아쉬움이다.

그 이외에 개발적인 부분은 차근 차근 정리를 하겠다. 

 

프로세스 정의 및 메뉴 정리

메뉴구성도

 

주요 프로세스

 1. 거래처를 등록 한다. / 거래처에는 매출 거래처와 매입 거래처 두 가지로 구분 한다.

 2. 등록 된 거래처에 매출/입금 혹은 매입/지급 전표를 입력한다.

  2-1. 매출 입금은 해당 일자(yyyy-mm-dd)에 전표를 생성 후 해당 전표에 판매한 상품을 입력한다.  / 해당 전표에 공급가액, 세금, 합계금액을 알 수 있다. / 해당 전표의 세금(과제, 면제, 영세) 등을 선택 할 수 있다.

  2-2 해당 전표에서 거래처가 입금한 금액 입력이 가능하다.

  2-3 해당 전표이전의 이월금액, 총금액(이월금액 + 해당전표 합계금액)을 알 수 있다.

  -> 매입/지급은 하위 프로세스와 동일 기능 수행

  2-4. 해당 전표를 거래명세서 형식으로 인쇄하여 거래처에 전달 할 수 있다.

 

 3. 견적서관리를 통해 거래처(매출)가 요청하는 상품(작업)에 대한 견적서를 발행 할 수 있다.

 4. 주문서관리를 통해 거래처(매입)에 요청하는 상품(작업)에 대한 주문서를 발행 할 수 있다.

 5. 실적조회를 통해 각종 조건으로 조회가 가능하다.

  5-1 거래 실적

    기간(yyyy-mm-dd ~ yyyy-mm-dd)과 매출/매입 구분, 거래처(선택)를 지정하여 거래 실적(금액)을 조회 할 수 있다.

  5-2 거래 내역 

    기간(yyyy-mm-dd ~ yyyy-mm-dd)과 매출/매입 구분, 거래처(선택)를 지정하여 거래 내역(상품,작업)을 조회 할 수 있다.

  5-3 고객미수

    기간(yyyy-mm-dd)과 매출/매입 구분 선택 후 해당 기간까지 거래처에 대한 미수금 혹은 미지급금을 조회 할 수 있다.

  5-4 일일매출/매입합계

    기간(yyyy-mm-dd ~ yyyy-mm-dd)을 선택 후 일자 별로 매출/매입 금액의 합계를 조회가 할 수 있다.

 

DB 구성

DB 구성은 엑셀 파일로 정리를 하였다.

주요 DB 테이블로는 매출/매입 관리 테이블로 

전표정보를 가진 마스터 테이블과 해당 전표의 상품 정보를 가진 detail 테이블로 구성 하였다.

 

Maria DB를 사용하였으며,

개발서버 - GCP 서버 

실제서버 - 사용자의 노트북 로컬 DB 서버

로 구분하여 Spring의 profiles 구분 기능으로 구분하여 사용 하고 있다. 

 

또 MariaDB Dump 기능을 사용하여 전체 DB 백업과 모든 테이블의 DB 백업을 진행하였고, 윈도우bat 파일을 만들어 어 사용자의 노트북이 켜질때마다 DB를 백업 하도록 구성하였다.

(DB 백업 전 전체 DB를 삭제 한 기억이 있어 

 

 

아쉬운 점은 erwin 과 같이 ui 적으로 정리를 하고 싶었으나 해당 부분을 진행하지 못하였다. 

 

 

 

총평

기존에 만들어진 프로그램을 웹으로 옮기기만 하면된다고 생각했기에 쉬운 마음으로 접근 하였다. 

그렇지만 충분하지 않는 분석과 DB 설계는 수정 사항을 만들게 되고 그 수정사항으로 개발 기간은 늘어나고 만들었던 기능을 다시 만드는 등의 추가적인 작업을 발생 시켰다.

단순히 내가 개인프로젝트의 경우는 이렇게 수정사항을 생기면 수정하게 되지만 

추후 내가 Pl이 되어 분석 및 설계 혹은 프로젝트를 리딩 하게 될 경우에는 이 단계를 정말 중요하게 생각해야 겠다.

 

v1.0 을 완성한 뒤 부모님이 사용할 수 있게 세팅을 하고 실 사용을 하게되었다. 

뿌듯하면서도 내가 만든 결과물로 인해 불편하시지는 않을까 하는 걱정도 많이 하기도 하였다. 

그래도 수정사항이나 불편사항들을 말씀해주시고, 또 이렇게 만들면 어떤지 아이디어도 주시기도 하면서 잘 만들었다 라는 말씀을 해주셨다. 앞으로도 더 불편한 사항이 없으시도록 노력하고 수정사항 하나하나 차근 차근 수정하면서 불편함이 없는 프로그램을 만들고 싶다.

 

 

 

반응형
반응형

https://odoepner.wordpress.com/2015/08/12/configure-intellij-to-use-default-eclipse-java-import-layout/

반응형
반응형

전체 DB를 날려버리다..... 

V1.0 을 찍은 뒤로 큰 버그 없이 사용 중이던 우원프로젝트

이후 환경에 대한 보안 작업으로 log, db backup 등 을 생각하고 있었고, 이중 DB 백업을 가장 우선으로 작업해야된다고 생각하고 있는데 

DB가 GCP의 무료 리눅스 서버에 올린 MariaDB를 그대로 사용 중이라 DB 백업 파일을 남기기 애매하다는 이유로 미뤄두고 있었고....

 

오늘 log 작업을 하는 도중 jpa의 설정 중 서버 시작 시 @entity 어노테이션을 기준으로 새로 table 을 create 해주는 옵션을 설정해 버렸고....(사실 이 옵션이 무엇인지도 모르고 다른 블로그 찾다가 아무 생각 없이 넣은 한줄이... 이렇게 큰 일을 낼 줄은 상상도 못했다..)

 

아무튼 이렇게 모든 테이블이 drop 된 후 재 create 되어 모든 데이터가 삭제 되었다.

 

진짜 이 때는 멍하니.... 뭐지.......... 롤백.....롤백을 하자...... rollback... 하지만 이미 데이터는 다 삭제된 상태로 커밋되어버렸고 되돌릴수 없는 강을 건넜다. 

 

복구방법을 찾자 

복구 방법에 대해서는 블로그에 다시 재 정리 하였다.

 

 

 

결국은....

결국은 이전 데이터 작업시 만들어 놓았던 엑셀 파일을 기준으로 다시 수동으로 insert 을 하는 작업을 통해서 DB 데이터를 복구 하였다.

DB 백업의 필요성 뼈저리게 느끼게 되었다.

 

반응형
반응형

 jquery 사용

 

1
2
3
4
5
6
7
8
9
10
11
$('.form-control').on("keydown"function(e) {
            var keyCode = e.keyCode;
            console.log(e.keyCode);
            if(keyCode === 39){ // Enter key
                if($(this).parent().next().find('input').attr('name'=== 'prdctAmt') {
                    $(this).parent().parent().next().find('input:eq(0)').focus();
                } else {
                    $(this).parent().next().find('input').focus();
                }
            }
        });

원하는 요소(ex. from=control 클래스를 가진 요소들) 에 keydown 이벤트 리스너를 추가 

4번째 if -> keyCode 가 39번(방향키 ->) 인 경우를 찾는다

그 뒤로 8번째 줄에서 내가 이동하고 싶은 input으로 focust(); 를 주면 된다.

 

5번째 줄 if의 경우는 내가 사용하는 경우로 1라인의 input 이 끝나는 지점에서는 다음 라인의 input으로 이동하도록 구현해 놓은 코드

 

 

 

순수 javascript

1
2
3
4
5
6
7
8
9
10
var formControl = document.getElementsByClassName('form-control');
        for(var i=0; i<formControl.length; i++) {
            formControl[i].addEventListener('keydown'function(e){
                var keyCode = e.keyCode;
                console.log('pushed key ' + e.key);
                if(keyCode == 39){ // Enter key
 
                }
            })
        }

 

반응형
반응형

스프링 부트 프레임워크에는 내장 웹 서버(톰캣)가 자동으로 설정되어 있습니다. 

그렇기에 우리는 SpringBootApplication을 통해 웹 서버를 작동시킬 수 있습니다.

 

다음은 스프링부트 기반 jar/war의 내장 웹 서버(톰캣)를 이용해서 윈도우 서비스 등록을 사용 방법에 대해서 설명하겠습니다.

 

 winsw 프로그램 다운로드 

 

https://github.com/kohsuke/winsw/releases

http://repo.jenkins-ci.org/releases/com/sun/winsw/winsw/2.1.2/

 

위의 링크를 통해 winsw의 최신 버전 exe 파일을 다운 받는다. 

 

 

 winsw 설정

 

winsw.exe 파일과 동일한 폴더 위치에서 다음과 같은 설정  .xml을 만든다 

 

1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="UTF-8"?>
<service>
    <id>서비스명</id>
    <name>서비스명</name>
    <description>서비스에 대한 설명</description>
    <executable>java</executable>
    <arguments>-jar "xxxx.jar / xxx.war"</arguments>
    <logmode>rotate</logmode>
</service>
cs

 

winsw.exe 와 설정파일.xml 은 동일한 이름으로 변경한다 

 -> 주로 프로젝트 명 혹은 서비스 등록 명으로 바꾸면 된다.

 

xxxx.jar / xxxx.war 의 경우는 자신의 스프링 부트 jar를 입력하면 된다.

 

 

 서비스 등록

 관리자 권한으로 CMD 창을 실행 한다.

  관리자 권한으로 실행하지 않을 시 권한 거부 에러가 발행할 수 있다.

 

위에서 만든 서비스명.exe (winsw.exe) 파일 위치로 이동 한 뒤 아래의 명령어를 친다.

 

서비스명.exe install

에러가 발생하지 않으면 서비스에 내가 등록한 서비스명으로 서비스가 등록된 것을 확인할 수가 있다.

 

반대로 등록한 서비스를 삭제하는 방법으로는 

서비스명.exe uninstall

 

 또한 

 서비스는 등록되었으나 서비스 시작 시 발생하는 에러는 

 동일 폴더 내 log 파일을 확인할 수 있다.

 

 

 

 

관련 내용 출처

 -http://cpsally.blogspot.com/2018/06/spring-boot-as-windows-service.html

 

반응형
반응형

ㅁ 개발 진행 사항

   - 메인 화면 차트 추가 

   - 주문서 인쇄 기능 추가 
   - 실적조회 - 미수금거래처조회 개발 완료
   - 실적조회 - 일일매출/매입합계 조회 개발 완료

   - ajax 로딩 바 추가 

 

 

ㅁ 추후 개발 목록

  - 거래 명세서 출력 폼 찾기

 

 

ㅁ 결과물

반응형

'IT > 우원프로젝트' 카테고리의 다른 글

우원 프로젝트 v1.0 정리  (0) 2020.05.01
2020-04-21 DB를 날려버리다......  (0) 2020.04.22
우원 프로젝트 2020-03-31  (0) 2020.04.01
우원 프로젝트 2020-03-29  (0) 2020.03.30
우원프로젝트 2020-03-25  (0) 2020.03.27

+ Recent posts