๐Ÿ”ฅ์šฐ๋‹นํƒ•ํƒ• ๊ฐœ๋ฐœ๊ธฐ - File CRUD

jiholeeยท2022๋…„ 4์›” 26์ผ
0

Java Spring

๋ชฉ๋ก ๋ณด๊ธฐ
2/5

๐Ÿ“Œย DB์— ์ €์žฅ๋˜๋Š” ๋‚ด์šฉ์„ ํŒŒ์ผ์—๋„ ์ €์žฅํ•˜์—ฌ ํŒŒ์ผ์„ ๋งˆ์น˜ DB์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋Š” ํŒŒ์ผ DB๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๊ธฐ ํŽธ

DB์— ๋‚ด์šฉ์„ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•œ ํ›„ fileDB๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•œ๋‹ค. fileDB์— ์ €์žฅ๋˜๊ธฐ ์ „์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ๋„ DB ๋‚ด์šฉ์„ ๋ณด๊ณ  ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

create

ํŒŒ์ผ DB๋ฅผ ์œ„ํ•œ MemberFileRepository ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋‹ค. ํšŒ์›์ด ์ถ”๊ฐ€๋  ๋•Œ DB์— ์ €์žฅ๋˜๊ณ  ๋‚œ ํ›„ saveOnFile() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๊ฐ์ฒด๋ฅผ json string ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•ด ์ฃผ๋Š” ObjectMapper๋ฅผ ์‚ฌ์šฉํ•ด ํŒŒ์ผ์— write ํ•ด์ฃผ์—ˆ๋‹ค. (Object โ‡’ Serialize โ‡’ "JSONโ€)

@Override
    public void saveOnFile(MemberDao memberDao) throws IOException {

        fileWriter = new FileWriter(fileDir + "fileDB", true);
        bufferedWriter = new BufferedWriter(fileWriter);

        ObjectMapper mapper = new ObjectMapper();
        String jsonStr = mapper.writeValueAsString(memberDao);
        try {
            bufferedWriter.write(jsonStr);
            bufferedWriter.newLine();
            bufferedWriter.flush();
            bufferedWriter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

read


์ฐพ๊ณ ์ž ํ•˜๋Š” member์˜ id๋ฅผ ์ด์šฉํ•ด ํŒŒ์ผ์—์„œ ํ•œ ์ค„์”ฉ ์ฝ์–ด ์ฐพ๊ณ ์ž ํ•˜๋Š” id๋ฅผ ๊ฐ€์ง„ ์ค„์„ ์ฐพ์•„ ๋‹ค์‹œ memberDao ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฆฌํ„ดํ•œ๋‹ค. ("JSON" โ‡’ Deserialize โ‡’ Object)

@Override
    public MemberDao findByIdOnFile(Long memberId) {
        Optional<String> out = null;

        // ํŒŒ์ผ์—์„œ ํ•ด๋‹น id๋ฅผ ๊ฐ€์ง„ ์ค„ ์ฐพ๊ธฐ
        try {
            fileReader = new FileReader(fileDir + "fileDB");
            bufferedReader = new BufferedReader(fileReader);
            File file = new File(fileDir + "fileDB");
            out = Files.lines(file.toPath())
                    .filter(line -> line.contains("{\"id\":" + memberId))
                    .findAny();
            bufferedReader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        ObjectMapper mapper = new ObjectMapper();
        MemberDao memberDao = null;
        try {
            memberDao = mapper.readValue(out.get(), MemberDao.class);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return memberDao;
    }

update

DB์˜ ํšŒ์›์ •๋ณด๋ฅผ ๋ฐ”๊พผ ๋’ค fileDB์—์„œ ๊ธฐ์กด ํšŒ์›์— ๋Œ€ํ•œ ํ•œ ์ค„ ๋‚ด์šฉ์„ ์ง€์šฐ๊ณ  ์ƒˆ๋กœ์šด ๋‚ด์šฉ์˜ ํšŒ์›์„ ์ €์žฅํ•œ๋‹ค.

@Override
    public void updateOnFile(MemberDao memberDao) {
        try {
            deleteOnFile(memberDao.getId());
            saveOnFile(memberDao);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

delete


ํšŒ์›์„ ์‚ญ์ œํ•  ๋•Œ DB์—์„œ ์‚ญ์ œํ•˜๊ณ  โ†’ FileStore ํšŒ์›์˜ ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๊ณ  โ†’ fileDB์—์„œ ์‚ญ์ œํ•˜๋Š” ์ˆœ์œผ๋กœ ์‚ญ์ œํ•œ๋‹ค.

์ฒ˜์Œ์— ํŒŒ์ผ์—์„œ ํ•œ ์ค„์„ ์–ด๋–ป๊ฒŒ ์ง€์šธ์ง€ ๊ณ ๋ฏผํ–ˆ๋Š”๋ฐ sunhwang๋‹˜๊ป˜ ๋ฌผ์–ด๋ณด๋‹ˆ java text file line delete๋กœ ๊ฒ€์ƒ‰ํ•˜์…”์„œ https://stackoverflow.com/questions/1377279/find-a-line-in-a-file-and-remove-it ๊ฐ„๋‹จํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„์ฃผ์…จ๋‹ค. ๊ฒฝ๋ ฅ์ด ์žˆ์œผ์…”์„œ ๊ทธ๋Ÿฐ์ง€ ์งฌ์ด ์žฅ๋‚œ์ด ์•„๋‹ˆ์—ˆ๋‹ค. ๋‚˜๋„ ์ž˜ ๊ฒ€์ƒ‰ํ•˜๋Š” ์‚ฌ๋žŒ์ด ๋˜์–ด์•ผ๊ฒ ๋‹ค.

@Override
    public void deleteOnFile(Long id){
        try {
            fileReader = new FileReader(fileDir + "fileDB");
            bufferedReader = new BufferedReader(fileReader);
            File file = new File(fileDir + "fileDB");
            List<String> out = Files.lines(file.toPath())
                    .filter(line-> !line.contains("{\"id\":" + id))
                    .collect(Collectors.toList());
            Files.write(file.toPath(), out, StandardOpenOption.WRITE, StandardOpenOption.TRUNCATE_EXISTING);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

try-catch์™€ throws ๋‘˜์ค‘์— ๋ญ˜ ์จ์•ผ ํ•˜๋Š”์ง€๋Š” ์•„์ง ๋ชจ๋ฅด๊ฒ ๋‹ค.๐Ÿง

๋‹ค์Œ์€ ๋กœ๊ทธ, AOP

0๊ฐœ์˜ ๋Œ“๊ธ€